使用ansible 也有好长时间了,以前的机器都是做好的模板,配置了ssh 无密码登陆,推送起来一般很方便。今天闲来无事,刚好手头也有个事情做,将明文密码推送的样例贴出来共享。
直入主题,
需求:修改一批机器的Hosts 文件,需要sudo 权限,并且sudo 账号(我这里是centos账号,)没有配置ssh 无密码登陆。(但是centos 账号都已经在/etc/sudoers 里面加过sudo 权限)
这里本人想偷懒,不想一台台再去配置免密钥ssh 登陆,就索性用ansible 明文密码推送来完成这个功能。
注:关于ansilbe 的安装,yml 文件使用,ssh 免秘钥登陆,hosts 文件入门配置不在本文讲解范围内。入门帖子应该网上是巨多的。
第一步:配置/etc/ansible/hosts 文件,设置管理组;
第二步:配置yml 文件,批量执行需要的动作
第三步:ansible-playbook 批量执行:
关键点补充说明:
关于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
转载于:https://blog.51cto.com/fuyuan2016/1836199