使用具有主从配置的Ansible-Pull对AWS实例进行自动扩展

时间:2015-12-28 16:52:20

标签: amazon-web-services ansible ansible-pull

我目前正在使用AWS实例,并希望将当前在AWS主节点上运行的所有配置传输到仅具有Ansible的多个AWS从属节点。从节点可以是2或3或可以更多。当从属节点的“利用率”下降或上升时,ansible-pull模型是否可以自动扩展AWS实例?

如何分配节点的AWS群集?

1 个答案:

答案 0 :(得分:6)

虽然这不是一个直接的答案,但在配置自动缩放的情况下,我使用 Bootstrap Pattern

在S3上放置git仓库和ansible-vault的密钥(通过实例的IAM角色进行身份验证),并将playbooks放在git仓库中。

EC2实例的用户数据为pip install ansibleget secret key from S3get playbook from git repositoryexecute ansible-playbook

如果EC2实例有某些角色,您可以拆分S3目录和git路径。

自助引导机制使自动缩放过程更加简单。

Update01:示例

EC2用户数据样本(尚未测试,作为图像):

#!/bin/bash

yum update -y
pip install -y ansible

aws s3 cp s3://mybucket/web/git_secret_key /root/.ssh/git_secret_key
chmod 600 /root/.ssh/git_secret_key

aws s3 cp s3://mybucket/web/config /root/.ssh/config
chmod 600 /root/.ssh/config

aws s3 cp s3://mybucket/web/ansible_vault_secret_key /root/ansible_vault_secret_key

git clone git://github.com/foo/playbook.git

ansible-playbook -i playbook/inventory/web playbook/web.yml --vault-password-file /root/ansible_vault_secret_key

s3:// mybucket / web / config示例:

Host github-bootstrap
  User git
  Port 22
  HostName github.com
  IdentityFile /root/.ssh/git_secret_key
  TCPKeepAlive yes
  IdentitiesOnly yes

Update02:最简单的版本。 (没有S3 / ansible-vault)

EC2用户数据样本(尚未测试,作为图像):

#!/bin/bash

yum update -y
pip install -y ansible

echo "YOUR GIT SECRET KEY" > /root/.ssh/git_secret_key
chmod 600 /root/.ssh/git_secret_key

cat << EOT > /root/.ssh/config
Host github-bootstrap
  User git
  Port 22
  HostName github.com
  IdentityFile /root/.ssh/git_secret_key
  TCPKeepAlive yes
  IdentitiesOnly yes
EOT
chmod 600 /root/.ssh/config

git clone git://github.com/foo/playbook.git

ansible-playbook -i playbook/inventory/web playbook/web.yml