一 Ansible的安装
Ansible的安装方式有多种多样,本文以最简单的方式来进行安装,
阿里云镜像ansible和epel源,安装省略!
ansible --version # 2.7.5版本的!
二 相关说明
#(1)必须用普通用户远程连接
# 创建普通用户的身份
[kiosk@localhost ~]$ id devops
uid=1001(devops) gid=1001(devops) groups=1001(devops)
说明:由于工作原理是把代码复制到目标主机,在目标主机上执行,所以目标主机一定要有python!
说明:被管理端也创建普通用户
# server2和server3做同样的事情
[root@server2 ~]# useradd devops
[root@server2 ~]# passwd devops
Changing password for user devops.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@server2 ~]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
三 进行免密认证
[devops@localhost anisble]$
ssh-keygen
ssh-copy-id server1:
ssh-copy-id server2:
# 注意测试
四 创建相关配置文件
[devops@localhost Desktop]$ tree anisble/
anisble/
├── ansible.cfg # 配置文件(顺序-->先从当前命令执行目录-->用户的家目录读取--->全局读取)
└── inventory # 资源清单!
# ansible.cfg
[defaults]
#(1)资源清单的路径
inventory = ./inventory
# inventory说明
[test]
172.25.2.1
[prod]
172.25.2.2
测试
[devops@localhost anisble]$ ansible all -m ping
172.25.2.1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.25.2.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
说明
ansible test -m copy -a "src=/etc/passwd dest=/tmp/passwd"
# test(资源清单)、-m copy(指定模块)、-a(参数)
说明:默认是command模块!
# /etc/sudoers 配置文件修改,在真实的生产环境中没有这么大的权限!
93 devops ALL=(ALL) NOPASSWD: ALL
# mansger和server1和server2都做同样的事情!
切换的说明
[defaults]
#(1)资源清单的路径
inventory = ./inventory
# 需求:不想每次切换!
#安全的角度-->开放普通用户的身份
[privilege_escalation]
#(1)是否可以sudo
become=True
#(2)采用sudo的身份
become_method=sudo
#(3)sudo后的用户身份
become_user=root
#(4)sudo是否需要验证密码
become_ask_pass=False
等价:
ansible all -m ping -u devops -b
相关说明
-u(远程主机的身份)
-u devops -b (远程切换某一个用户)
有时候需要拥有root具有的权限-->配置sudo的权限!
默认不会切换的,即使在客户端主机中配置了sudoers,不会sudo切换用户执行
默认普通用户执行某些命令,必须加上sudo参数!
必须在server中声明-b或者在配置文件中书写
颜色的说明:绿色(没有发生变化)、黄色(变更)、红色(报错)、紫色(Warning)
关键:幂等机制的理解!
注意:Add-Hoc的方式不读取资源清单的变量!
三 配置文件的说明
(1)配置文件
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles # 自行下载的roles
(2)可执行的二进制文件
/usr/bin/ansible-vault # 加密
/usr/bin/ansible # add-hoc的命令
/usr/bin/ansible-galaxy # 下载playbook
/usr/bin/ansible-playbook # 运行playbook
(3)内置的python lib库文件