Nous avons créé une bibliothèque qui vous permet de créer / mettre à jour / supprimer / vérifier la pile AWS CloudFormation à partir du CUI à l'aide de l'outil de ligne de commande Python Fabric.
** fabricawscfn ・ ・ ・ Générateur de tâches Fabric pour AWS CloudFormation. **
CloudFormation est souvent utilisé pour gérer les ressources AWS, mais les opérations GUI de la console AWS sont laborieuses et difficiles à automatiser. Il peut être automatisé à l'aide d'API telles que l'AWS CLI, mais il est également difficile d'écrire des scripts standard un par un.
Avec fabricawscfn, tout ce que vous avez à faire est de spécifier le nom de la pile et le fichier modèle dans le script Fabric (fabfile.py) et les tâches de base pour travailler avec la pile seront automatiquement générées.
fabfile.py
from fabricawscfn import *
StackGroup('my-cfn-templates', 'example', 'templates')\
  .define_stack('foo', 'example-foo', 'foo.yaml')\
  .define_stack('bar', 'example-bar', 'bar.yaml', Tags=[{'Key':'example', 'Value':'EXAMPLE'}])\
  .generate_task(globals())
Avec cela seul, les tâches Fabric telles que la création de pile / mise à jour / suppression / vue de liste / vue détaillée sont automatiquement générées et mises à disposition.
Le résultat de l'exécution de chaque tâche ressemble essentiellement à ce que l'interface utilisateur de la console AWS est convertie en CUI telle quelle.
$ fab -l
Available commands:
    create_bar         create stack bar.
    create_foo         create stack foo.
    delete_bar         delete stack bar.
    delete_foo         delete stack foo.
    desc_stack         Describe existing stack.
    list_exports       List exports.
    list_resources     List existing stack resources.
    list_stacks        List stacks.
    params             Set parameters. (Applies to all tasks)
    sync_templates     Synchronize templates local dir to S3 bucket.
    update_bar         update stack bar.
    update_foo         update stack foo.
    validate_template  Validate template on local dir.
Installez Python 2.x et pip. Python 3.x n'a pas été testé.
Installez l'AWS CLI (http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html).
Installez Fabric.
$ pip install fabric
$ pip install git+https://github.com/crossroad0201/fabric-aws-cloudformation.git
Créez un script Fabric fabfile.py et utilisez fabricawscfn pour définir la pile comme dans l'exemple ci-dessus.
Voir GitHub README pour plus d'informations.
$ fab list_stacks
Stacks:
+------------+----------------------+-----------------+----------------------------------+-------------+-------------+
| StackAlias | StackName            |      Status     |           CreatedTime            | UpdatedTime | Description |
+------------+----------------------+-----------------+----------------------------------+-------------+-------------+
| foo        | fabricawscfn-dev-foo | CREATE_COMPLETE | 2017-03-05 04:35:12.823000+00:00 |      -      | Foo bucket. |
| bar        | fabricawscfn-dev-bar |   Not created   |                -                 |      -      | -           |
+------------+----------------------+-----------------+----------------------------------+-------------+-------------+
$ fab desc_stack:foo
Stack:
+----------------------+-----------------+----------------------------------+-------------+-------------+
| StackName            |      Status     |           CreatedTime            | UpdatedTime | Description |
+----------------------+-----------------+----------------------------------+-------------+-------------+
| fabricawscfn-dev-foo | CREATE_COMPLETE | 2017-03-05 04:35:12.823000+00:00 |     None    | Foo bucket. |
+----------------------+-----------------+----------------------------------+-------------+-------------+
Parameters:
+---------+--------+
| Key     | Value  |
+---------+--------+
| Param4  | PARAM4 |
| Param3  | PARAM3 |
| Param2  | PARAM2 |
| Param1  | PARAM1 |
| EnvName | dev    |
+---------+--------+
Outputs:
+--------+-----------------+-------------+
| Key    | Value           | Description |
+--------+-----------------+-------------+
| Bucket | sandbox-dev-foo | Foo bucket. |
+--------+-----------------+-------------+
Events(last 20):
+----------------------------------+--------------------+----------------------------+----------------------+-----------------------------+
| Timestamp                        |       Status       | Type                       | LogicalID            | StatusReason                |
+----------------------------------+--------------------+----------------------------+----------------------+-----------------------------+
| 2017-03-05 04:35:55.694000+00:00 |  CREATE_COMPLETE   | AWS::CloudFormation::Stack | fabricawscfn-dev-foo | None                        |
| 2017-03-05 04:35:53.009000+00:00 |  CREATE_COMPLETE   | AWS::S3::Bucket            | Bucket               | None                        |
| 2017-03-05 04:35:32.308000+00:00 | CREATE_IN_PROGRESS | AWS::S3::Bucket            | Bucket               | Resource creation Initiated |
| 2017-03-05 04:35:31.102000+00:00 | CREATE_IN_PROGRESS | AWS::S3::Bucket            | Bucket               | None                        |
| 2017-03-05 04:35:12.823000+00:00 | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack | fabricawscfn-dev-foo | User Initiated              |
+----------------------------------+--------------------+----------------------------+----------------------+-----------------------------+
$ fab create_bar
Creating stack...
  Stack Name: fabricawscfn-dev-bar
  Template  : https://s3.amazonaws.com/crossroad0201-fabricawscfn/example/dev/subdir/bar.yaml
  Parameters: [{'ParameterValue': 'dev', 'ParameterKey': 'EnvName'}]
Waiting for complete...
Finish.
C'est encore difficile et si vous l'utilisez dans le développement de produits réels, de petites améliorations devraient apparaître, donc nous l'améliorerons de temps en temps.
Conseils pour vous aider à démarrer avec l'outil de déploiement Python Fabric
Mettez la bibliothèque Python sur Github et installez-la avec pip
[Créer une jolie table ASCII avec PrettyTable en Python](http://momijiame.tumblr.com/post/44704474054/python-faire une jolie-ascii-table avec -prettytable-)
Recommended Posts