Ansible 基础配置.note

noteId: D59F3EFF38074E08A8D8FD31C38A3A05 · 原始路径:/ALL/Ansible 自动化管理/Ansible 基础配置.note · 图片:8 · 附件待处理:0

 
最少三台Linux,一台作为ansible服务器(主控),其它全部作为客户端(被控),客户端的ip地址建议是连续性的,保障主控与被控之间连通性正常:
每台Linux都需安装有 python3 和 openssh-server
 
apt install -y ansible    //安装ansible
ansible --version    //查看ansible是否正常运行,并查看其主配置文件路径(默认是没有的,需要创建文件和目录)
 
 
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配置文件中不能够有中文,被注释的中文也不允许,否则运行报错
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  #日志路径,默认不保存日志
上面的配置文件不需要额外操作,提权配置文件需要在客户端 安装并配置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
 
ansible --version
 
在客户端上进行配置:
apt install -y sudo    //安装sudo
vim /etc/sudoers       //编辑sudo
# 在root下方行输入:
user    ALL=(ALL:ALL) NOPASSWD:ALL
 
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"
[webservers]
# 同时指定多台主机
10.22.0.[51:55]
 
# 指定主机端口
[rcoky]
10.22.0.56:6522
调用时使用中括号内定义的名字即可调用,使用 all 则会调用全部
 
 
主控端生成密钥对,并下发公钥到被控端
# 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 root@192.168.10.99
ansible 192.168.10.99 -m ping
# ansible弹出的提示没有顺序,它是哪个最先执行完,就先直接提示哪个
ansible LIN -m ping
ansible 192.168.10.99 -m ping -u root -k

# -u    //指定用户
# -k    //手动输入密码
绿色:成功执行,未对目标造成更改(类似ping)
黄色:成功执行,但是对目标造成了更改(类似修改IP地址等)
紫色:遇到了一点问题,或者执行异常,但是不影响命令执行
红色:执行失败
 
ansible all --list-hosts
ansible LIN --list-hosts