
主机规划
| 主机名称 | 操作系统版本 | 内网IP | 外网IP(模拟) | 安装软件 |
|---|---|---|---|---|
| ansi-manager | CentOS7.5 | 172.16.1.180 | 10.0.0.180 | ansible |
| ansi-haproxy01 | CentOS7.5 | 172.16.1.181 | 10.0.0.181 | |
| ansi-haproxy02 | CentOS7.5 | 172.16.1.182 | 10.0.0.182 | |
| ansi-web01 | CentOS7.5 | 172.16.1.183 | 10.0.0.183 | |
| ansi-web02 | CentOS7.5 | 172.16.1.184 | 10.0.0.184 | |
| ansi-web03 | CentOS7.5 | 172.16.1.185 | 10.0.0.185 |
在实际使用中并不需要对ansible配置进行修改,或者说只有需要的时候才修改ansible配置。
添加用户账号
说明:
1、 运维人员使用的登录账号;
2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放;
3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。
1 | # 使用一个专门的用户,避免直接使用root用户 |
基于密码连接「了解」
在实际生产环境中,建议使用基于秘钥连接而不是密码连接。
原因如下:
1、将密码直接写入文件中,有安全隐患;
2、生产环境的密码可能会定期更换,如果基于密码连接,那么我们也会频繁的维护,造成维护成本高;
3、基于秘钥连接,我们只需要做一次秘钥分发,后期连接无需任何修改。
清单配置
1 | [yun@ansi-manager ansible_info]$ pwd |
测验连接
1 | [yun@ansi-manager ansible_info]$ ansible 172.16.1.180 -m ping -i ./hosts_pwd # 普通用户执行 |
大概提示信息:因为启用了主机密钥检查,而 sshpass 不支持这一点。请将此主机「172.16.1.180」的指纹添加到你本机的known_hosts文件中以管理此主机。
跳过主机密钥检查,有两种方式:
方式1:修改 Linux 系统配置
1 | [root@ansi-manager ssh]# vim /etc/ssh/ssh_config |
但是这个是 Linux 自带的配置,我们不能随意去更改。因此不建议如此操作。
方式2:修改 ansible 配置
1 | [root@ansi-manager ansible]# pwd |
改配置仅对 root 用户生效,其他普通用户是不生效的。这里使用该方法。
再次连接测试
1 | [yun@ansi-manager ansible_info]$ ansible 172.16.1.180 -m ping -i ./hosts_pwd # 普通用户还是不行 |
基于秘钥连接「推荐」
在实际生产环境中,建议使用基于秘钥连接而不是密码连接。
原因如下:
1、将密码直接写入文件中,有安全隐患;
2、生产环境的密码可能会定期更换,如果基于密码连接,那么我们也会频繁的维护,造成维护成本高;
3、基于秘钥连接,我们只需要做一次秘钥分发,后期连接无需任何修改。
实现yun用户免秘钥登录
要求:根据规划实现 172.16.1.180 到 172.16.1.180、172.16.1.181、172.16.1.182、172.16.1.183、172.16.1.184、172.16.1.185 免秘钥登录
因此需要在 172.16.1.180 机器创建秘钥,然后分发到受控机器。
创建秘钥
1 | [yun@ansi-manager ~]$ ssh-keygen -t rsa # 一路回车即可 注意使用的是 yun 用户 |
分发密钥
1 | [yun@ansi-manager ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.180 |
测验免密登录是否成功
1 | [yun@ansi-manager ~]$ ssh 172.16.1.180 # 等价于 ssh yun@172.16.1.180 |
注意:必须保证每台机器都免密登录成功,因此需要每台机器都验证。
.ssh目录中的文件说明
1 | [yun@ansi-manager .ssh]$ pwd |
清单配置
1 | [yun@ansi-manager ansible_info]$ pwd |
测验连接
测验一
1 | [yun@ansi-manager ansible_info]$ ansible 172.16.1.180 -m ping -i ./hosts_key |
测验二
1 | [yun@ansi-manager ansible_info]$ ansible proxyservers -m ping -i ./hosts_key |
测验三
1 | [yun@ansi-manager ansible_info]$ ansible webservers -m ping -i ./hosts_key |
混合方式和主机组方式
清单配置
1 | [yun@ansi-manager ansible_info]$ pwd |
说明:定义多组使用没有问题。但是不能像上面一样既有密码配置,又有秘钥配置,这样会增加维护成本。这里为了演示因此用了密码和秘钥配置。
测验连接
测验一
1 | # 如果 ~/.ssh/known_hosts 文件中没有添加受控机指纹,那么必须提权操作 |
测验二
1 | [yun@ansi-manager ansible_info]$ ansible webservers -m ping -i ./hosts_group --list-hosts |
测验三
1 | [yun@ansi-manager ansible_info]$ ansible website -m ping -i ./hosts_group --list-hosts |
测验四
特殊组:all
1 | [yun@ansi-manager ansible_info]$ ansible all -m ping -i ./hosts_group --list-hosts |