需求:
centos7機(jī)器A、B
機(jī)器B上sudo需要輸入密碼才能切換至root用戶
機(jī)器A上如何編寫(xiě)ansible-playbook,才能使用在機(jī)器B上使用root用戶進(jìn)行操作
ansible 版本:ansible 2.7.0
inventory目錄:/etc/ansible/
根據(jù)官網(wǎng):
ansible_ssh_host
將要連接的遠(yuǎn)程主機(jī)名.與你想要設(shè)定的主機(jī)的別名不同的話,可通過(guò)此變量設(shè)置.
ansible_ssh_port
ssh端口號(hào).如果不是默認(rèn)的端口號(hào),通過(guò)此變量設(shè)置.
ansible_ssh_user
默認(rèn)的 ssh 用戶名
ansible_ssh_pass
ssh 密碼(這種方式并不安全,我們強(qiáng)烈建議使用 --ask-pass 或 SSH 密鑰)
ansible_sudo_pass
sudo 密碼(這種方式并不安全,我們強(qiáng)烈建議使用 --ask-sudo-pass)
ansible_sudo_exe (new in version 1.8)
sudo 命令路徑(適用于1.8及以上版本)
ansible_connection
與主機(jī)的連接類型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默認(rèn)使用 paramiko.1.2 以后默認(rèn)使用 'smart','smart' 方式會(huì)根據(jù)是否支持 ControlPersist, 來(lái)判斷'ssh' 方式是否可行.
ansible_ssh_private_key_file
ssh 使用的私鑰文件.適用于有多個(gè)密鑰,而你不想使用 SSH 代理的情況.
ansible_shell_type
目標(biāo)系統(tǒng)的shell類型.默認(rèn)情況下,命令的執(zhí)行使用 'sh' 語(yǔ)法,可設(shè)置為 'csh' 或 'fish'.
ansible_python_interpreter
目標(biāo)主機(jī)的 python 路徑.適用于的情況: 系統(tǒng)中有多個(gè) Python, 或者命令路徑不是"/usr/bin/python",比如 \*BSD, 或者 /usr/bin/python
不是 2.X 版本的 Python.我們不使用 "/usr/bin/env" 機(jī)制,因?yàn)檫@要求遠(yuǎn)程用戶的路徑設(shè)置正確,且要求 "python" 可執(zhí)行程序名不可為 python以外的名字(實(shí)際有可能名為python26).
與 ansible_python_interpreter 的工作方式相同,可設(shè)定如 ruby 或 perl 的路徑....
1、我們先使用ansible_sudo_pass試試看
編輯/etc/ansible/hosts
vim /etc/ansible/hosts
[test1]
192.168.1.1 ansible_sudo_pass='aa123'
寫(xiě)一個(gè)playbook
vim test.yml
- hosts: test1
user: test
tasks:
- name: just test
become: yes
become_user: root
become_method: sudo
shell: mkdir -p /tmp/test
執(zhí)行一下
ansible-playbook test.yml
登陸機(jī)器B:test1上,發(fā)現(xiàn)/tmp/test文件夾創(chuàng)建成功
2、我們使用安全的方式試試看
既然官方文檔強(qiáng)烈建議使用--ask-sudo-pass參數(shù),我們?cè)囈幌逻@種方法
在/etc/ansible/hosts里面把sudo密碼注釋掉
[test1]
192.168.1.1
執(zhí)行剛才的test.yml,執(zhí)行命令如下
ansible-playbook --ask-sudo-pass test.yml
會(huì)發(fā)現(xiàn)出現(xiàn)如下界面
SUDO password
輸入sudo的密碼,執(zhí)行成功
小結(jié)
方法一:方便快捷
方法二:安全