2016-12-14 12 views
3

私はec2インスタンスをプロビジョニングするために使用してきました。私がVMを起動するたびに、AWS_ACCESS_KEY_ID = ACCESS-KEY-ID export AWS_SECRET_ACCESS_KEY = SECRET-ACCESS-KEY を実行してから、インスタンスのプロビジョニング/設定を行うために実行可能なplaybookを実行する必要があります。エクスポートの代わりAWS_ACCESS_KEY_ID&AWS_SECRET_ACCESS_KEY

上記のコマンドを実行するプレイブックは不可能なrawモジュールを使用して作成しました。そのプレイブックを実行した後でも、provision.ymlスクリプトを実行する前にこれらのコマンドを手動で実行する必要があります。

コマンドの手動実行を奨励しないいくつかの自動化ジョブで実際に作業しているので、これらのコマンドをプレイブック自体から効率的に実行する方法はありますか?

答えて

0

Ansibleは、環境変数を設定することができます。

あなたの脚本では:

- name: "Simple playbook" 
    hosts: localhost 
    roles: 
    - aws 
    environment: 
    AWS_ACCESS_KEY_ID: "{{ aws_access_key }}" 
    AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}" 

私は強くAnsibleで資格情報を格納するための迅速簡単な方法としてansible-vault使用する方法を学ぶことをお勧めします。

動的インベントリスクリプトec2.pyを使用している場合、上記の解決策は機能しません。プレイブックによって環境が設定される前に、在庫がロードされます。この場合、最良の選択肢は代替のAWS credential methodsの1つを使用することです。 1つの簡単な方法は、コンテンツを持つ~/.botoファイルです。

[Credentials] 
aws_access_key_id = YOUR_ACCESS_KEY 
aws_secret_access_key = YOUR_ACCESS_SECRET 
関連する問題