【发布时间】:2016-01-14 07:40:49
【问题描述】:
我目前正在学习如何使用 Ansible。现在,我有一堆服务器,无论是新的还是旧的,都有不同的登录名或密码或两者兼有。所有人都有运行剧本的关键访问权限。
这是我开始的。示例 hosts 文件:
# legacy and new have different logins (like root and deploy)
[legacy]
serv1
serv2
[new]
serv3
serv4
# different has a different login and password altogether
[different]
serv5
所以为了简单起见,我最初在所有机器上都有一个相当于sudo apt-get update && sudo apt-get upgrade 的剧本,但由于登录名/密码不同,我为每个主机创建了多个剧本。但现在我想把它弄干,并根据他们的文档查看角色。
现在我有这样的东西。 test/roles/common/tasks/main.yml 文件:
---
- name: run apt-get update
apt: update_cache=yes
- name: run apt-get upgrade
apt: upgrade=yes
site.yml 文件:
- name: apply common configuration to all nodes
hosts: all
roles:
- common
我知道我实际上可以在我的 hosts 文件中使用 ansible_ssh_user=root 或 ...=deploy 定义不同的登录名。或者将它们放在组变量中。但是我该如何处理不同的 sudo 密码呢? [legacy] 是 root,所以我不需要 sudo,但 [new] 和 [different] 需要它,并且有不同的密码。我该怎么做呢?组变量?我是否创建这些:test/group_vars/new/some_file_with_a_passwd.yml 和 test/group_vars/different/some_other_passwd.yml(忽略安全问题)?
site.yml如何识别有不同密码的主机或没有密码的主机?
为清楚起见进行编辑:我有 SSH 访问权限,因此在播放过程中执行“预任务”步骤始终有效(我通过密钥访问连接,而不是通过密码连接)。我不担心安全,因为这是下一步。现在,我想把 group_vars 弄好……这是我遇到问题的sudo 升级。例如。 serv1 sudo 可能是 root/password1, serv3 sudo: deploy/password2, serv5: anotherdeploy/password3
【问题讨论】:
标签: ubuntu ansible roles ansible-playbook