ansible 安装部署即使用
ansible 安装部署即使用
部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
默认使用SSH协议对设备进行管理;
有大量常规运维操作模块,可实现日常绝大部分操作;
配置简单、功能强大、扩展性强;
支持API及自定义模块,可通过Python轻松扩展;
通过Playbooks来定制强大的配置、状态管理;
轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
ansible的架构
Ansible:Ansible核心程序。
Host Inventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins:连接插件,Ansible和Host通信使用
ansible 安装
-
下载并安装
python2-jmespath-0.9.4-2.el7.noarch.rpm
python-httplib2-0.9.2-1.el7.noarch.rpm
sshpass-1.06-1.el7.x86_64.rpm
ansible-2.9.27-1.el7.noarch.rpm
添加yum源,请参考:
https://blog.csdn.net/qq_41187116/article/details/125702966?spm=1001.2014.3001.5502
yum install ansible -y
tree /etc/ansible
ansible配置
- ansible 的配置文件为/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:
vi etc/ansible/ansible.cfg
# 修改或者添加如下内容
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5 #并发连接数,默认为5
sudo_user = root #设置默认执行命令的用户
remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60 #设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)
-
host配置
vi /etc/ansible/hosts # 添加以下内容 [test] lsyk02 [prod] lsyk03 [test2] lsyk04 [prod2] lsyk05
-
配置ansible主机与其他受控机器的免密ssh
请参考:https://blog.csdn.net/qq_41187116/article/details/125702854?spm=1001.2014.3001.5502
ansible 测试
# 全部受控机器执行
ansible all -m ping
# 指定受控机器执行
ansible test:prod2:test2 -m ping
ansible使用
-
ansible-doc [参数] [模块…]
ansible-doc -l %列出可用模块
ansible-doc -s %显示指定模块的playbook片段## -
ansible 清单 -m 模块 -a 模块参数
常用的模块如下:
ansible all -m ping :命令来进行主机连通性测试
ansible all -m command -a “useradd lee” -u root -k :在远程主机执行命令,并将结果返回本主机。
ansible all -m command -a "useradd lee" -u root -k ansible all -m command -a "userdel -r lee" -u root -k ansible all -m command -a "chdir=/etc cat passwd " -u root -k ansible all -m command -a "chdir=/etc creates=/etc/passwd cat passwd " -u root -k ansible all -m command -a "chdir=/etc removes=/etc/passwd cat passwd " -u root -k
ansible all -m copy -a :从ansible主机复制文件到受控主机
ansible all -m copy -a "src=/root/westos dest=/mnt/westos owner=lee mode=777 backup=yes" ansible all -m copy -a "content='hello westos\nhello linux\n' dest=/mnt/westosfile1 owner=lee mode=600"
ansible all -m user -a :块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作