您的位置:首页 > 其它

ansible 批量推送 ansible_ssh_pass + ansible_sudo_pass+ become 使用案例

2016-08-09 17:05 330 查看
使用ansible 也有好长时间了,以前的机器都是做好的模板,配置了ssh 无密码登陆,推送起来一般很方便。今天闲来无事,刚好手头也有个事情做,将明文密码推送的样例贴出来共享。

直入主题,
需求:修改一批机器的Hosts 文件,需要sudo 权限,并且sudo 账号(我这里是centos账号,)没有配置ssh 无密码登陆。(但是centos 账号都已经在/etc/sudoers 里面加过sudo 权限)

这里本人想偷懒,不想一台台再去配置免密钥ssh 登陆,就索性用ansible 明文密码推送来完成这个功能。
注:关于ansilbe 的安装,yml 文件使用,ssh 免秘钥登陆,hosts 文件入门配置不在本文讲解范围内。入门帖子应该网上是巨多的。

第一步:配置/etc/ansible/hosts 文件,设置管理组;




第二步:配置yml 文件,批量执行需要的动作





第三步:ansible-playbook 批量执行:







关键点补充说明:
官方文档:http://docs.ansible.com/ansible/become.html


关于become 的使用,当需要执行某些特殊操作需要专门权限时,可以用become_user那强调切换,同时1.9 版本以前的sudo_user 也依然保留使用;





2.当使用了beocome_user时,并且指定需要sudo,需要在hosts 文件指定ansible_sudo_pass 密码,否则become_user 使用sudo 进行操作时无权限执行,不会成功。比如我这里用centos 账号执行 echo "127.0.0.1 $(hostname)" >>/etc/hosts 需要sudo 权限的,所以用 become_user: root,并且指定了ansible_sudo_pass 密码,这样就可以顺利的执行了。








最后贴上yml文件以供参考:

---

- hosts: office-zhaoman-spider

sudo_user: centos

sudo: yes

tasks:

- name: echo /etc/hosts

shell: echo "127.0.0.1 $(hostname) " >> /etc/hosts

ignore_errors: True

become: true
become_user: root

- name: cat /etc/hosts

shell: cat /etc/hosts

ignore_errors: false

- shell: cat /etc/hosts

register: ps

- debug: var=ps.stdout_lines
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  become ssh ansible