Wir haben eine Bibliothek erstellt, mit der Sie den AWS CloudFormation-Stapel mithilfe des Python-Befehlszeilentools Fabric über die CUI erstellen / aktualisieren / löschen / überprüfen können.
** Fabricawscfn ・ ・ ・ Fabric-Taskgenerator für AWS CloudFormation. **
CloudFormation wird häufig zum Verwalten von AWS-Ressourcen verwendet, GUI-Vorgänge über die AWS-Konsole sind jedoch mühsam und schwer zu automatisieren. Es kann mithilfe von APIs wie AWS CLI automatisiert werden, es ist jedoch auch mühsam, Standardskripte einzeln zu schreiben.
Bei Fabricawscfn müssen Sie lediglich den Stapelnamen und die Vorlagendatei im Fabric-Skript (fabfile.py
) angeben. Die grundlegenden Aufgaben für die Arbeit mit dem Stapel werden automatisch generiert.
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())
Allein damit werden Fabric-Aufgaben wie Stapelerstellung / Aktualisierung / Löschen / Listenansicht / Detailansicht automatisch generiert und verfügbar gemacht.
Das Ausführungsergebnis jeder Aufgabe entspricht im Wesentlichen der CUI der AWS-Konsolen-Benutzeroberfläche.
$ 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.
Haben Sie Python 2.x und Pip installiert. Python 3.x wurde nicht getestet.
Installieren Sie die AWS CLI (http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html).
Fabric installieren.
$ pip install fabric
$ pip install git+https://github.com/crossroad0201/fabric-aws-cloudformation.git
Erstellen Sie ein Fabric-Skript "fabfile.py" und definieren Sie den Stapel mit "Fabricawscfn" wie im obigen Beispiel.
Weitere Informationen finden Sie unter GitHub README.
$ 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.
Es ist immer noch rau und wenn Sie es in der tatsächlichen Produktentwicklung verwenden, sollten kleine Verbesserungen herauskommen, so dass wir es von Zeit zu Zeit verbessern werden.
Tipps für den Einstieg in das Python-Bereitstellungstool Fabric
Stellen Sie die Python-Bibliothek auf Github und installieren Sie sie mit pip
[Erstellen Sie eine hübsche ASCII-Tabelle mit PrettyTable in Python](http://momijiame.tumblr.com/post/44704474054/python- erstellen Sie eine hübsche ASCII-Tabelle mit -prettytable-)
Recommended Posts