1.当ansible控制端服务器登录用户为root或其它用户,需要指定jsxge用户和私钥文件(也可以在playbook文件开头指定用户remote_user: jsxge,但hosts文件也需要指定私钥文件)
vim /etc/ansible/hosts
[test]
101.189.104.192 ansible_ssh_user=sues ansible_ssh_private_key_file=/home/suss/.ssh/id_rsa
举一个示例进行说明:
---
- name: deploy docker run
hosts: demo-autodeploy
remote_user: root
become: yes
become_user: root
become_method: sudo
tasks:
- name: test shell
shell: yum install nginx -y
hosts: demo-autodeploy #hosts用于指定要执行指定任务的主机,其可以是一个或多个由逗号分隔主机组;在/etc/ansible/hosts中定义
remote_user: root #在远程主机上以哪个用户身份执行
become: yes #是否允许身份切换
become_method: sudo #切换用户身份的方式,有sudo、su、pbrun等方式,默认为sudo
become_user: root #切换成什么用户身份,默认为root
以上remote_user、become、become_method、become_use选项不仅可用于全局,也可用于各task中
remote_user、become、become_method、become_user分别对应inventory文件中的ansible_user、ansible_become、ansible_become_method、ansible_become_user
如果需要指定切换用户身份时的密码,可在执行ansible-playbook时使用选项 --ask-become-pass指定
2.ansible指定用户密码和私钥
cat hosts
[ldlinux]
111.111.211.111 ansible_ssh_user='opsop' ansible_ssh_pass='xxxx'
ansible ldlinux -i hosts -m shell -a "rm -f /security" --private-key=./ops.rsa -b