到底有多好用?在IT行业人人都知道的Ansible详解,建议收藏

目录

引言:话不多说,Ansible详解请各位王子、公主来阅

一、Ansible的特点

二、Ansible的安装

1、先安装一个扩展源epel-release包

2、有了扩展源以后Ansible 即可yum直接安装。

三、Ansible配置文件常见的参数

四、Ansible主机清单

1、 直接指明主机地址或主机名:

2、 定义一个主机组[组名]把地址或主机名加进去

3、需要设置相同登录用户和登录密码都一致时

4、组嵌式

五、Ansible 的常用命令

我们比较常用的是ansible和ansible-playbook

ansible

Ansible命令使用格式

 Ansible命令参数

ansible-playbook

Ansible-playbook的命令使用格式

Ansible-playbook的参数:


引言:话不多说,Ansible详解请各位王子、公主来阅

一、Ansible的特点

1.轻量级,无需在客户端安装agent,更新时只需在操作机上进行一次更新即可。
2.配置简单、功能强大、扩展性强

3.部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

4.批量任务执行可以写成脚本,而且不用分发到远程就可以执行。
5.使用Python编写,维护更简单
6.支持sudo
7.Ansible社区非常活跃。Ansible本身提供的模块非常丰富,第三方资源多
8.有大量常规运维操作模块,可实现日常绝大部分操作;
9.支持API及自定义模块,可通过Python轻松扩展
10.通过Playbooks来定制强大的配置、状态管理;
11.提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台

二、Ansible的安装

1、先安装一个扩展源epel-release

yum install epel-release -y

2、有了扩展源以后Ansible 即可yum直接安装。

yum install ansible –y

三、Ansible配置文件常见的参数

常见的哦:

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主机清单

我们上面有提到资源清单,这个清单就是我们的主机清单,里面保存的是一些 Ansible 需要连接管理的主机列表。我们可以来看看他的定义方式

首先进入这个定义资源清单的文件内加入以下方式的内容

我们准备了两台机器做示例:

web1   10.12.153.111

web2   10.12.153.222

1、 直接指明主机地址或主机名:

#直接写主机名需要提前做域名解析

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="端口"   

2、 定义一个主机组[组名]把地址或主机名加进去

[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="端口"

3、需要设置相同登录用户和登录密码都一致时

[web]
web1
web2
[web:vars]             #定义变量使一下“用户”与“密码”同时对以上主机生效
ansible_ssh_root="用户"
ansible_ssh_pass="密码"

4、组嵌式

#大组包含小组

[web]

web1

[db]

web2

[mysql:children]    #web组里的所有主机和db组里的所有主机都属于mysql这个大组

web

db

五、Ansible 的常用命令

ansible  Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行

ansible-doc   Ansible 模块功能查看工具

ansible-galaxy  下载/上传优秀代码或Roles模块 的官网平台,基于网络的

ansible-playbook  Ansible 定制自动化的任务集编排工具

ansible-pull  Ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)

ansible-vault   Ansible 文件加密工具

ansible-console  Ansible基于Linux Console界面可与用户交互的命令执行工具

我们比较常用的是ansibleansible-playbook

ansible

ansible命令。解决一些简单或者平时工作中临时遇到的任务,相当于Linux系统命令行下的Shell命令。

需要使用ansible的场景:

        非固化需求

        临时一次性操作

        二次开发接口调用
ansible的返回结果都非常友好,一般会用3种颜色来表示执行结果:红色、绿色、橘黄色      

        红色表示执行过程有异常,一般会中止剩余所有的任务。
        绿色和橘黄色表示执行过程没有异常,所有任务均正常执行,但橘黄色表示命令执行结束后目标有状态的变化。

Ansible命令使用格式

ansible  [options]

#是Inventory中定义的主机或主机组,<>表示该选项是必须项,不可忽略。
#[options]是Ansible的参数选项,[]表示该选项中的参数任选其一

 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的命令使用格式

ansible-playbook playbook.yml

Ansible-playbook的参数:

-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的常用模块!!!

到底有多好用?在IT行业人人都知道的Ansible详解,建议收藏_第1张图片

你可能感兴趣的:(ansible,运维,centos,网络,linux,运维开发,自动化)