AnsibleでSSMパラメータを管理する
ssmパラメータに登録(Valueが平文の場合)
- aws_ssm_parameter_storeモジュールを利用する
- 実行には
botocore
/ boto3
(pipでインストールする)
- instance_sizeと作成するami-idを登録してみる
- string_typeは
String
を指定する
- IAMロールが必要
- AmazonEC2RoleforSSM
- AmazonSSMFullAccess(必要に応じて絞る。為にすために一時的にFullAccessを付与)
- name: Register ssm-parameters
aws_ssm_parameter_store:
name: "{{ item.name }}"
value: "{{ item.value }}"
region: "{{ region }}"
string_type: String
with_items:
- { name: web_instance_size, value: "{{ web_instance_size }}"}
- { name: web_base_ami, value: "{{ web_base_ami }}" }
TASK [ssm : Register ssm-parameters] ***********************************************************
ok: [localhost] => (item={u'name': u'web_instance_size', u'value': u't2.nano'})
ok: [localhost] => (item={u'name': u'web_base_ami', u'value': u'ami-06c43a7df16e8213c'})
ssmパラメータに登録(Valueを暗号化する場合)
- string_typeは
SecureString
を指定する
- IAMロールが必要
- AWSKeyManagementServicePowerUserを付与した
- name: Register ssm-parameters encrypt-value
aws_ssm_parameter_store:
name: "{{ item.name }}"
value: "{{ item.value }}"
region: "{{ region }}"
string_type: SecureString
with_items:
- { name: sample_password, value: "{{ sample_password }}"}
SecurityGroup-IDとSubnet-IDとIAMロールARNを動的にssmパラメータに登録する
web
という名前のSecurityGroup-IDを登録する
public1
という名前のSubnet-IDを登録する
register
にaws-cliの結果を登録する
web_subnet_id.stdout
をvalueにして登録する
web
という名前のIAMロールARNを登録する
register
にaws-cliの結果を登録する
web_subnet_id.stdout
をvalueにして登録する
- name: Fetch web_sgid
command: /usr/local/bin/aws ec2 describe-security-groups --region {{ region }} --query 'SecurityGroups[?GroupName==`web`].GroupId' --output text
register: web_sgid
check_mode: no
- name: Fetch web_subnet_id public1
command: /usr/local/bin/aws ec2 describe-subnets --region {{ region }} --filters Name=tag:Name,Values="public1" --query 'Subnets[].SubnetId' --output text
register: web_subnet_id
check_mode: no
- name: Fetch web_role_profile_arn
command: /usr/local/bin/aws iam get-instance-profile --instance-profile-name web --query 'InstanceProfile.Arn' --output text
register: web_role_profile_arn
check_mode: no
- name: Register ssm-parameters
aws_ssm_parameter_store:
name: "{{ item.name }}"
value: "{{ item.value }}"
region: "{{ region }}"
string_type: String
with_items:
- { name: web_instance_size, value: "{{ web_instance_size }}"}
- { name: web_base_ami, value: "{{ web_base_ami }}" }
- { name: web_sgid, value: "{{ web_sgid.stdout }}"}
- { name: web_subnet, value: "{{ web_subnet_id.stdout }}"}
- { name: web_role_profile_arn, value: "{{ web_role_profile_arn.stdout }}"}
- name: Register ssm-parameters encrypt-value
aws_ssm_parameter_store:
name: "{{ item.name }}"
value: "{{ item.value }}"
region: "{{ region }}"
string_type: SecureString
with_items:
- { name: ansible_vault_password, value: "{{ vault_password }}"}