twelfth day for learning

Ansible

术语

中文叫法

含义

Control node

控制节点

指的是安装了Ansible服务的主机,也被称为Ansible控制端,主要是用来发布运行任务、调用功能模块,对其他主机进行批量控制。

Managed nodes

受控节点

指的是被Ansible服务所管理的主机,也被称为受控主机或客户端,是模块命令的被执行对象。

Inventory

主机清单

指的是受控节点的列表,可以是IP地址、主机名称或者域名。

Modules

模块

指的是上文提到的特定功能代码,默认自带有上千款功能模块,在Ansible Galaxy有超多可供选择。

Task

任务

指的是Ansible客户端上面要被执行的操作。

Playbook

剧本

指的是通过YAML语言编写的可重复执行的任务列表,把常做的操作写入到剧本文件中,下次可以直接重复执行一遍。

Roles

角色

从Ansible 1.2版本开始引入的新特性,用于结构化的组织Playbook,通过调用角色实现一连串的功能。

Ansible服务主配置文件优先级顺序

优先级

文件位置

./ansible.cfg

~/.ansible.cfg

/etc/ansible/ansible.cfg

可以修改一下配置文件来修改设置,配置文件被读取的顺序如下:

* ANSIBLE_CONFIG (一个环境变量) * ansible.cfg (位于当前目录中) * .ansible.cfg (位于家目录中) * /etc/ansible/ansible.cfg

主机清单(Inventory):/etc/ansible/hosts 文件

主机清单文件修改后的是会立即生效的,一般常用“ansible-inventory --graph”命令以结构化的方式显示出受管节点主机信息

          Ansible常用变量汇总

参数

作用

ansible_ssh_host

受管主机名

ansible_ssh_port

端口号

ansible_ssh_user

默认账号

ansible_ssh_pass

默认密码

ansible_shell_type

Shell终端类型

将对应的变量及信息填写到主机清单文件中,在执行任务时便会自动的对账号密码进行匹配,而不用再每次重复输入

账户和密码:

1.[root@linuxprobe ~]# vim /etc/ansible/hosts

[all:vars] ansible_user=root ansible_password=redhat

2.将Ansible主配置文件中的第71行设置成默认不需要SSH协议的指纹验证,以及第107行设置成默认执行Playbook时所使用的管理员名称为root:

[root@linuxprobe ~]# vim /etc/ansible/ansible.cfg

71 host_key_checking = False

107 remote_user = root

注:不需要重启服务即可

扩展:

prod组是B组的组成员:vim /etc/ansible/hosts

[B:children]

prod

 Ansible服务常用模块名称及作用

模块名称

模块作用

ping

检查受管节点主机网络是否能够联通。

yum

安装、更新及卸载软件包。

yum_repository

管理主机的软件仓库配置文件。

template

复制模板文件到受管节点主机。

copy

新建、修改及复制文件。

user

创建、修改及删除用户。

group

创建、修改及删除用户组。

service

启动、关闭及查看服务状态。

get_url

从网络中下载文件。

file

设置文件权限及创建快捷方式。

cron

添加、修改及删除计划任务。

command

直接执行用户指定的命令。

shell

直接执行用户指定的命令(支持特殊字符)。

debug

输出调试或报错信息。

mount

挂载硬盘设备文件。

filesystem

格式化硬盘设备文件。

lineinfile

通过正则表达式修改文件内容。

setup

收集受管节点主机上的系统及变量信息。

firewalld

添加、修改及删除防火墙策略。

lvg

管理主机的物理卷及卷组设备。

lvol

管理主机的逻辑卷设备。

ansible是用于执行临时任务的命令,也就是执行后即结束,不同于Playbook剧本文件的可重复性!!

常用的语法格式为“ansible 受管主机节点 -m 模块名称 [-a 模块参数]

如果已经设置过主机清单文件(/etc/ansible/hosts)则可以写all参数来代指全体受管节点,或用dev、test等主机组名称来代指某一组的主机节点。

可用“ansible-doc 模块名称”的命令格式自行查询,或是用“ansibe-doc -l”命令列举出当前Ansible服务所支持的所有模块信息:

Playbook:

    Playbook剧本文件采用YAML语言编写,有着强制性的格式规范,通过空格将不同信息分组,因此有时会因一两个空格错位而导致报错,需要万分小心。YAML文件开头需要先写三个减号---,多个分组信息需要间隔一致才能执行,上下也要对齐,后缀名一般为.yml。

     Playbook剧本文件的结构由四部分组成——target、variable、task、handler。target部分用于定 义要执行剧本的主机节点范围、variable部分用于定义剧本执行时要用的变量、task部分用于定义将在远程主机上执行的任务列表、handler部分用于定义执行完成后需要调用的后续任务。

     角色的好处就在于其组织成了一个简洁的、可重复调用的抽象对象,用户可以把注意力放到Playbook的大局上,统筹各个关键性任务,只有在需要时才去深入了解细节。角色的获取有三种方法,分别是加载系统内置的、从外部环境获取的以及自行创建的,

上一篇:ansible-playbook批量部署ELFK集群


下一篇:ansible的事实,循环和条件判断