使用 Ansible 部署到 Elastic Beanstalk
Deployment to Elastic Beanstalk with Ansible
我们正在使用 eb_deployer to deploy to Elastic Beanstalk and we would like to provision each node using .ebextensions 和 Ansible。
为 eb_deployer
创建的包看起来像这样(简化),它是用 Ansible 在控制节点上组装的:
- Procfile
- application.jar
- .ebextensions
- ansible.config
- provision.yml
- roles
- appdynamics
- tasks
- main.yml
ansible.config
在 Beanstalk 节点上安装 ansible
并运行单个剧本:
packages:
python:
ansible: []
container_commands:
ansible:
command: "ansible-playbook .ebextensions/provision.yml"
provision.yml
(简体)只包含一个角色:
- name: provision eb instance
hosts: localhost
connection: local
gather_facts: yes
roles:
- role: appdynamics
controller_host: "example.com"
controller_port: 443
现在的问题是 appdynamics
角色使用存储在保管库中的变量 appdynamics_accesskey
,但保管库密码文件存储在控制节点上。
我们希望避免将保险库密码文件从控制机器复制到 S3 存储桶上的 .ebextensions
,然后是 Beanstalk 节点。
遇到这种情况你会怎么做?也许还有其他工具更适合这种情况?
似乎 one way to solve this issue is to launch temporary instance, configure it with Ansible running on the control machine only, create an image with ec2_ami
Ansible module, and use that image to configure custom image 用于自动缩放组。
我们正在使用 eb_deployer to deploy to Elastic Beanstalk and we would like to provision each node using .ebextensions 和 Ansible。
为 eb_deployer
创建的包看起来像这样(简化),它是用 Ansible 在控制节点上组装的:
- Procfile
- application.jar
- .ebextensions
- ansible.config
- provision.yml
- roles
- appdynamics
- tasks
- main.yml
ansible.config
在 Beanstalk 节点上安装 ansible
并运行单个剧本:
packages:
python:
ansible: []
container_commands:
ansible:
command: "ansible-playbook .ebextensions/provision.yml"
provision.yml
(简体)只包含一个角色:
- name: provision eb instance
hosts: localhost
connection: local
gather_facts: yes
roles:
- role: appdynamics
controller_host: "example.com"
controller_port: 443
现在的问题是 appdynamics
角色使用存储在保管库中的变量 appdynamics_accesskey
,但保管库密码文件存储在控制节点上。
我们希望避免将保险库密码文件从控制机器复制到 S3 存储桶上的 .ebextensions
,然后是 Beanstalk 节点。
遇到这种情况你会怎么做?也许还有其他工具更适合这种情况?
似乎 one way to solve this issue is to launch temporary instance, configure it with Ansible running on the control machine only, create an image with ec2_ami
Ansible module, and use that image to configure custom image 用于自动缩放组。