Ansible 基础配置.note
- 准备:
1.
最少三台Linux,一台作为ansible服务器(主控),其它全部作为客户端(被控),客户端的ip地址建议是连续性的,保障主控与被控之间连通性正常:
每台Linux都需安装有 python3 和 openssh-server
- 主控安装ansible:
1.
apt install -y ansible //安装ansible
ansible --version //查看ansible是否正常运行,并查看其主配置文件路径(默认是没有的,需要创建文件和目录)
- 如果执行ansible命令提示不支持的locale:
1.
root@debian:~# ansible --version
ERROR: Ansible could not initialize the preferred locale: unsupported locale setting可以尝试在
~/.bashrc中加入
export LC_ALL="C.UTF-8":
root@debian:~# vim ~/.bashrc
root@debian:~# source ~/.bashrc - 编辑 ansible 主配置文件:
1.
注意:需要删除中文注释,ansible配置文件中不能够有中文,被注释的中文也不允许,否则运行报错
vim /etc/ansible/ansible.cfg //vim 打开上面的 ansible 主配置文件(默认是没有的,需要创建文件和目录)
输入:
[defaults]
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,冒号(:)隔开
forks = 50 #并发连接数,默认为5
remote_user = user
sudo_user = root #设置默认执行命令的用户
remote_port = 22 #指定连接被管节点的管理端口,默认为22端口
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False
timeout = 60 #SSH连接超时时间,单位为秒
log_path = /var/log/ansible.log #日志路径,默认不保存日志- 或者 提权配置文件(两种方式选择一种即可):
1.
上面的配置文件不需要额外操作,提权配置文件需要在客户端 安装并配置sudo配置文件(配置对应的普通用户)
[defaults]
inventory = /etc/ansible/hosts
library = /usr/share/ansible
forks = 50
remote_user = user
remote_pass = Skills39
remote_port = 22
host_key_checking = False
timeout = 60
log_path = /var/log/ansible.log
[privilege_escalation]
#become=True //注释掉后提权关闭,删除注释则开启提权(全局提权)
become_method=sudo
become_user=root
become_pass = Skills39
become_ask_pass=False- 验证配置文件路径:
1.
ansible --version
- 假设使用的是提权配置文件(未使用可跳过此操作):
1.
在客户端上进行配置:
apt install -y sudo //安装sudo
vim /etc/sudoers //编辑sudo
# 在root下方行输入:
user ALL=(ALL:ALL) NOPASSWD:ALL
- 在主控端上配置hosts文件(主机清单):
1.
ansible中保存了ansible需要管理连接的主机列表
ansible的 ansible.cfg 和 hosts 、Playbooks建议放在同一目录下
root@HOST:/etc/ansible# cat /etc/ansible/hosts
[LIN]
192.168.10.80
192.168.10.99
192.168.10.100
192.168.10.101
[LIN:vars]
ansible_ssh_pass="Skills39" //指定连接使用的用户密码
ansible_ssh_port=22
//指定连接使用的端口
ansible_python_interpreter=/usr/bin/python3 //指定连接使用的python语言环境
[mysqlServer]
192.168.10.[99:101]
# Windows默认没有ssh,需要手动下载
[WIN]
172.168.1.[1:2]
[WIN:vars]
ansible_user=administrator //指定连接使用的用户名
ansible_ssh_pass="Skills39"
- 其他清单格式:
1.
[webservers]
# 同时指定多台主机
10.22.0.[51:55]
# 指定主机端口
[rcoky]
10.22.0.56:6522调用时使用中括号内定义的名字即可调用,使用 all 则会调用全部
- 公钥认证连接
1.
主控端生成密钥对,并下发公钥到被控端
# 1、生成密钥对
ssh-keygen
# 2、向被控端下发公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.10.80
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.10.99
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.10.100
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@192.168.10.101- 测试ssh能否成功登陆:
1.
ssh root@192.168.10.99- 测试单台主机连通性:
1.
ansible 192.168.10.99 -m ping
- 测试主机清单连通性:
1.
# ansible弹出的提示没有顺序,它是哪个最先执行完,就先直接提示哪个
ansible LIN -m ping
- 自定义用户和密码进行连接:
1.
ansible 192.168.10.99 -m ping -u root -k
# -u //指定用户
# -k //手动输入密码
- 关于提示颜色:
1.
绿色:成功执行,未对目标造成更改(类似ping)
黄色:成功执行,但是对目标造成了更改(类似修改IP地址等)
紫色:遇到了一点问题,或者执行异常,但是不影响命令执行
红色:执行失败- 列出主机清单:
1.
- 列出全部:
1.
ansible all --list-hosts
- 列出指定的部分:
1.
ansible LIN --list-hosts