Ansible教程:添加被控(受控)节点(Ubuntu)

环境说明

控制节点:安装 ansible 的 Ubuntu(用来下发指令)
受控节点:另一台 Ubuntu(被管理机器)

控制原理

ansible 通过 SSH 免密登录受控节点,不需要在受控节点装 ansible,只需要 python3

SSH 免密登录

1. 生成 SSH 密钥

ssh-keygen -t rsa

然后敲3次回车,生成密钥,如下图:

2. 将公钥推送到受控节点

ssh-copy-id user@192.168.58.138

解释:

  • user:受控节点用户名;192.168.58.138:受控节点IP

  1. 测试免密登录

免密 ssh 登录测试:

ssh user@192.168.58.138

不需要输入密码,即可正常登录,说明配置成功

测试是否连通

指定ip列表

注意: 必须有 , 否则报错,有 , 表示列表

ansible all -i 192.168.58.138,  -m ping

常见报错排查

  1. ping失败:SSH连接超时

    • 受控节点防火墙放行22端口:sudo ufw allow 22/tcp
    • 检查IP是否可达 ping 192.168.1.100
  2. Permission denied

    • 免密推送失败,重新执行 ssh-copy-id
    • 确认受控节点 /etc/ssh/sshd_config 允许公钥认证 PubkeyAuthentication yes
  3. Could not find python interpreter

    • 受控节点没装 python3:sudo apt install python3
  4. 需要 sudo 权限执行任务
    如果受控节点任务需要root,在inventory增加 ansible_become=yes ansible_become_pass=密码

    [web]
    192.168.1.100 ansible_user=ubuntu ansible_become=yes
    

    受控节点用户需要有sudo免密(可选配置)

    # 受控节点 sudo免密,不用每次输入密码
    sudo visudo
    ubuntu ALL=(ALL) NOPASSWD: ALL
    

测试其他命令

查看被控节点主机名

ansible web -m command -a "hostname" -i ansible_client.ini

查看被控节点磁盘

ansible web -m command -a "df -h"

原文出处:/show_1GW45ACxfxph.html