Ansible-playbook 使用普通用户登录远程节点并执行操作
在实际生产环境中,经常会使用ansible远程操作节点,而这些远程节点往往会只允许普通用户操作,有的环境中可以切换root进行操作 ,下面就是介绍使用普通用户登录远程节点后切换root进行操作
hosts文件
hosts文件中指定的是远程节点的ip地址和用户名密码等信息,也可以自定义变量,默认 /etc/ansible/hosts 中配置主机信息,也可以自己指定
[cluster]
192.168.1.19 ansible_ssh_port=121 ansible_ssh_user=xxx hostname=hostname9 ansible_ssh_pass='xxxx' ansible_become_pass="xxx"
192.168.1.10 ansible_ssh_port=121 ansible_ssh_user=xxx hostname=hostname0 ansible_ssh_pass='xxxx' ansible_become_pass="xxx"
192.168.1.11 ansible_ssh_port=121 ansible_ssh_user=xxx hostname=hostname1 ansible_ssh_pass='xxxx' ansible_become_pass="xxx"
ansible-playbook 配置文件
ansible-playbook 配置文件是执行具体命令的剧本,下面是示例 test.yml
---
- hosts: cluster
remote_user: xxx
gather_facts: True
become: yes #表示是否允许用户切换
become_method: su #表示切换用户的方式,有su/sudo/pbrun等方式,默认是sudo方式
become_user: root #表示要切换到哪个用户,即目标用户
tasks:
- name: copy
copy:
src: /tmp/file
dest: /usr/bin/
- name: shell
shell: chmod +x /usr/bin/file
- name: shell
shell: chown yyy:yyy /usr/bin/file
执行
# hosts文件可选,不单独指定就是读取 /etc/ansible/hosts中的文件
ansible-playbook test.yml [ -i hosts文件]
上面的xxx,yyy均是用户,为了脱敏使用的,在实际的环境中替换成具体的用户名和密码 ,over