简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
以下实验由2台主机进行测试,其中一台node1作为管理机(老板),另外node2作为被管主机(员工)。
node1:192.168.20.222/24
node2:192.168.20.223/24
1、安装ansible使用yum install命令安装,先安装epel-release源再安装ansible
$ yum -y install epel-release //安装epel-release源,安装后会产生新repo配置文件
$ yum -y install ansible //安装ansible
$ yum list installed |grep ansible //查看是否已安装成功
$ ansible --version //验证是否安装成功,查看ansible的版本
2、配置SSH无密钥登陆
配置SSH无密码便当需要三步:
1)在控制端主机上生成一对密钥
[root@node1 .ssh]# ssh-keygen-t rsa
2)将公钥下发给远程被管理的主机192.168.20.223
[root@node1 .ssh]#ssh-copy-id root@192.168.20.223
3)保管私钥,使用ssh-add命令将私钥交给被管理的主机192.168.20.223管理
# ssh-add .ssh/id_rsa
4)验证配置是否成功
# ssh 192.168.20.223
此时在管理机器上再次连接客户端机器,就无需输入账号和密码了,可以尝试使用ansible命令进行连接
3、创建主机清单
主机目录(Host Inventory,又称主机清单)保存了Ansible所管理的远程主机的信息,以及一些连接参数,也可用于对远程主机进行分类。其默认配置文件是/etc/ansible/hosts
[root@node1 .ssh]# cat /etc/ansible/hosts
[server1]
192.168.20.223
192.168.20.224
4、Ansible模块
4.1文件模块:
copy:将本地文件复制到受控主机
file:创建或者和删除远程主机上的文件或者目录
lineinfile:替换文件中的内容,添加内容到指定文件位置
synchronize:使用rsync同步内容
4.2软件包模块
package:使用操作系统本机的自动检测软件包管理器管理软件包
yum:使用yum软件包管理器管理软件包
apt:使用apt软件包管理器管理软件包
dnf:使用dnf软件包管理器管理软件包
pip:从PyPI管理Python软件包
4.3系统模块
firewalld:使用firewalld管理任意端口和服务
reboot:重新启动计算机
service:管理服务
user:添加、删除和管理用户账户
4.4Net Tools模块
get_url:通过http、https或者ftp下载文件
nmcli:管理网络
uri:与WEB服务交互
5、ansible命令运行方式及常用参数
格式: ansible 主机清单 -m 模块 -a 模块参数
示例1:使用user模块来在主机node2上创建用户newbie,其UID设置为4000
[root@localhost ~]#ansible server1 -m user -a 'name=newbie uid=4000 state=present'
注:server1为主机清单中组名称,user为模块名,-a 后面为模块名指定 的参数
示例2:使用copy模块将源文件拷贝到被控端的相应的目录
[root@localhost ~]#ansible server1 -m copy -a 'src=/etc/fstab dest=/var/tmp/fstab'