ubuntu – Ansible:如何使用不同密码的主机运行游戏?

我目前正在学习如何使用Ansible.现在,我有一堆服务器,包括新旧服务器,它们有不同的登录名或密码,或两者兼而有之.所有人都有关键访问权限来运行游戏.

这是我开始的.示例主机文件

# 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升级所有机器,但由于login / passwd的不同,我为每个主机创建了多个playbook.但现在我想干掉它,并根据他们的文档查看角色.

现在我有这样的事情. 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密码呢? [遗产]是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

通常,在使用没有无密码sudo的用户运行时使用 --ask-sudo-password或其短别名-K后,您可能希望在Ansible密码提示后在命令行上传递sudo密码.这样做的好处是不会在任何地方记录在你的Ansible代码库中,然后不会在源代码管理中结束.

但是,这是一个单一提示,将应用于所有主机,因此不适合您的用例.

ansibe_sudo_pass变量可以替代地用于为任何特定主机的用户提供sudo密码.这应仅在需要sudo密码时使用,因此如果您将此变量提供给具有无密码sudo的主机,则应忽略它.

由于您的用户/密码组合似乎完全由组而不是每个主机拆分,因此将凭证放在group vars中具有逻辑意义.

nikobelia nikobelia中,您可能需要考虑使用诸如Ansible’s Vault,credstash之类的东西来加密这些敏感数据.

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...