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