目录
我们比较常用的是ansible和ansible-playbook
1.轻量级,无需在客户端安装agent,更新时只需在操作机上进行一次更新即可。
2.配置简单、功能强大、扩展性强;3.部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
4.批量任务执行可以写成脚本,而且不用分发到远程就可以执行。
5.使用Python编写,维护更简单。
6.支持sudo,
7.Ansible社区非常活跃。Ansible本身提供的模块非常丰富,第三方资源多。
8.有大量常规运维操作模块,可实现日常绝大部分操作;
9.支持API及自定义模块,可通过Python轻松扩展;
10.通过Playbooks来定制强大的配置、状态管理;
11.提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
epel-release
包yum install epel-release -y
yum install ansible –y
常见的哦:
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日志的文件(默认不记录日志)
我们上面有提到资源清单,这个清单就是我们的主机清单,里面保存的是一些 Ansible 需要连接管理的主机列表。我们可以来看看他的定义方式:
首先进入这个定义资源清单的文件内加入以下方式的内容
我们准备了两台机器做示例:
web1? ?10.12.153.111
web2? ?10.12.153.222
#直接写主机名需要提前做域名解析
web1? ?ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"? ??
web2????ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"?
或
10.12.153.111???ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"? ?
10.12.153.222? ?ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"? ?
[web]? ? ?#[ ]里定义组名,这里举例为web
10.12.153.111???ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"???
10.12.153.222???ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"??
#添加多个连续主机 例1-10的范围
10.12.153.[1:10]? ?ansible_ssh_root="用户"??ansible_ssh_pass="密码"??ansible_ssh_port="端口"
[web]
web1
web2
[web:vars] #定义变量使一下“用户”与“密码”同时对以上主机生效
ansible_ssh_root="用户"
ansible_ssh_pass="密码"
#大组包含小组
[web]
web1
[db]
web2
[mysql:children]? ? #web组里的所有主机和db组里的所有主机都属于mysql这个大组
web
db
ansible
Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
ansible-doc
Ansible 模块功能查看工具
ansible-galaxy
下载/上传优秀代码或Roles模块 的官网平台,基于网络的
ansible-playbook
Ansible 定制自动化的任务集编排工具
ansible-pull
Ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)
ansible-vault
Ansible 文件加密工具
ansible-console
Ansible基于Linux Console界面可与用户交互的命令执行工具
ansible
和ansible-playbook
ansible
ansible命令。解决一些简单或者平时工作中临时遇到的任务,相当于Linux系统命令行下的Shell命令。
需要使用ansible的场景:
????????非固化需求
????????临时一次性操作
????????二次开发接口调用
ansible的返回结果都非常友好,一般会用3种颜色来表示执行结果:红色、绿色、橘黄色? ? ??????????红色表示执行过程有异常,一般会中止剩余所有的任务。
????????绿色和橘黄色表示执行过程没有异常,所有任务均正常执行,但橘黄色表示命令执行结束后目标有状态的变化。
ansible <host-pattern> [options]
#<host-pattern>是Inventory中定义的主机或主机组,<>表示该选项是必须项,不可忽略。
#[options]是Ansible的参数选项,[]表示该选项中的参数任选其一
-i ????????INVENTORY, --inventory INVENTORY:指定主机清单文件(默认/etc/ansible/hosts),或以逗号分隔的主机列表。
-m???????? MODULE_NAME, --module-name MODULE_NAME:指定要使用的模块(default=command)。
-a ????????MODULE_ARGS, --args MODULE_ARGS:模块参数。
-f ????????FORKS, --forks FORKS:并发管控主机的数量(default=5)。
--list-hosts:列出符合条件的主机列表,不执行任何操作。
-M ????????MODULE_PATH, --module-path MODULE_PATH:指定模块存放路径,默认/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认路径。
-l ????????SUBSET, --limit SUBSET:指定运行的主机。
-C????????--check:检查语法。测试执行,不会做任何更改。
-v?????????--verbose:输出更详细的执行过程信息,-vvv可得到执行过程所有信息。
-o????????--one-line:标准输出至一行。
-t ????????TREE, --tree TREE:输出信息至TREE目录下,结果文件以远程主机名命名。
-b???????? --become:使用在远程主机上切换到root用户去执行命令(不提示密码)。要在远程主机提升sudo权限(例如centoshh ALL=(ALL) NOPASSWD:ALL)。
-u???????? REMOTE_USER, --user REMOTE_USER:指定远程主机以此用户运行命令。(default=None)。
-K????????--ask-become-pass:用户的密码(--sudo时使用)
--private-key? ?????????PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE:指定密钥文件。
ansible-playbook
ansible-playbook命令,解决复杂或需固化下来的任务,相当于Linux系统的Shell Scripts。
是日常应用中使用频率最高的命令,其工作机制是,通过读取预先编写好的playbook文件实现批量管理。
需要使用Ansible-playbook的场景
????????情景1:新购置的服务器安装完系统后需做一系列固化的初始化工作,诸如:定制防火墙策略、添加NTP时间同步配置、添加EPEL源等。
????????情景2:业务侧每周定期对生产环境发布更新程序代码
ansible-playbook playbook.yml
-i I????????NVENTORY, --inventory INVENTORY:指定主机清单文件,或以逗号分隔的主机列表。
-b, ????????--become:使用在远程主机上切换到root用户去执行命令(不提示密码)。要在远程主机提升sudo权限(例如centoshh ALL=(ALL) NOPASSWD:ALL)。
-f ????????FORKS, --forks FORKS:并发管控主机的数量(default=5)。
-C, ????????--check:测试执行,不会做任何更改。
--syntax-check:????????检查Playbook中的语法,但不执行。
--list-hosts:????????列出匹配的主机列表,不执行任何操作。
--list-tasks:????????列出所有要执行的任务。
--list-tags:????????列出所有可用的tags。
-t ????????TAGS, --tags TAGS:只执行指定的tags任务。
--skip-tags SKIP_TAGS:????????跳过指定的tags任务。
--start-at-task START_AT_TASK:????????从第几条任务开始执行。
--step:????????逐步执行Playbook定义的任务,并经人工确认后继续执行下一步任务。
-e EXTRA_VARS, --extra-vars EXTRA_VARS:????????在Playbook中引入外部变量。
-D,--diff:????????当更新的文件数及内容较少时,该选项可显示这些文件不同的地方,该选项结合-C用会有较好的效果。
--ask-vault-pass:????????使用加密playbook文件时提示输入密码。
--force-handlers:????????即使任务失败,也要运行处理程序
--flush-cache:????????清除缓存。
--version:????????显示程序版本号,配置文件位置,配置模块搜索路径,模块位置,可执行位置和退出
--become-user BECOME_USER:????????以此用户运行操作(default=root)
今天的内容就到这里啦!希望能够帮助到大家!建议收藏!下期继续更新Ansible的常用模块!!!