前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >02-Ansible配置

02-Ansible配置

原创
作者头像
小朋友呢
修改2020-01-15 11:13:21
7430
修改2020-01-15 11:13:21
举报
文章被收录于专栏:小朋友学云计算

主机清单-inventory

查看ansible里的安装文件

代码语言:txt
复制
[root@workstation ~]# rpm -ql ansible|less
/etc/ansible/ansible.cfg					#默认ansible的默认配置文件位置
/etc/ansible/hosts							#默认inventory主机清单位置
/etc/ansible/roles							#默认inventory角色位置
/usr/bin/ansible                			#ansible命令的文件
/usr/lib/python2.7/site-packages/ansible    #提供Python模块
/usr/share/man/man1/   						#帮助文档

简介

  • inventory是一个被管理主机的一个清单文件。
  • inventory里可以有单个主机,也可以有多个主机加起来的主机组。
  • inventory有静态的也有动态的

静态inventory

单个主机

可以是ip地址,也可以是域名

代码语言:txt
复制
[student@workstation ansible]$ cat inventory
servera
192.168.1.100
192.168.1.123

主机组

格式
代码语言:txt
复制
[组名]
主机1
主机2
主机3
...
示例
代码语言:txt
复制
[student@workstation ansible]$ cat inventory 
localhost

[web-server]
servera
serverb

[balancer]
serverc

[data-server]
serverd
列出主机

all:代表所有主机

代码语言:txt
复制
[student@workstation ansible]$ ansible -i inventory --list-hosts all
  hosts (5):
    localhost
    serverc
    servera
    serverb
    serverd

ungrouped:未分组主机

代码语言:txt
复制
[student@workstation ansible]$ ansible -i inventory --list-hosts ungrouped
  hosts (1):
    localhost

嵌套组

格式
代码语言:txt
复制
[组名:children]
组名1
组名2
示例

同一个(主机/组)可以出现在多个组中

代码语言:txt
复制
[student@workstation ansible]$ cat inventory 
localhost
[web-server]
servera
serverb

[balancer]
serverc

[data-server]
serverd

[webs:children]
web-server
data-server

[bakend:children]
balancer
webs
列出主机
代码语言:txt
复制
[student@workstation ansible]$ ansible -i inventory --list-hosts webs
  hosts (3):
    servera
    serverb
    serverd

[student@workstation ansible]$ ansible -i inventory --list-hosts bakend
  hosts (4):
    serverc
    servera
    serverb
    serverd

简化表达式

格式
代码语言:txt
复制
[start:end]
示例

192.168.1.1:100

代表192.168.1.1-192.168.1.100

192.168.10:20.1:254

代表192.168.10.1-192.168.20.254

server01:20.domain.com

代表01,02,03...20

a:c.domain.com

代表a,b,c

代码语言:txt
复制
[student@workstation ansible]$ cat inventory 
192.168.1.[1:100]
192.168.[10:20].[1:254]

[server]
server[01:20].domain.com

[mydomain]
[a:c].domain.com
列出主机
代码语言:txt
复制
[student@workstation ansible]$ ansible -i inventory --list-hosts '192.168.12.25*'
  hosts (6):
    192.168.12.25
    192.168.12.250
    192.168.12.251
    192.168.12.252
    192.168.12.253
    192.168.12.254

[student@workstation ansible]$ ansible -i inventory --list-hosts server12.domain.com
  hosts (1):
    server12.domain.com

[student@workstation ansible]$ ansible -i inventory --list-hosts mydomain
  hosts (3):
    a.domain.com
    b.domain.com
    c.domain.com

模糊匹配

通配符在Ansible表示0个或多个任意字符,主要应用于一些模糊规则匹配。

*匹配

匹配所有主机,all或*号功能相同。如检测所有主机存活情况。

代码语言:txt
复制
ansible all --list-hosts
ansible '*' --list-hosts
ansible '172.25.0.*' --list-hosts
ansible 'server*' --list-hosts 

逻辑或匹配

如我们希望同时对多台主机或多个组同时执行,相互之间用:(冒号)或者,逗号分隔即可。

代码语言:txt
复制
ansible 'servera,prod' --list-host
ansible 'ba*,prod' --list-host 

逻辑与(&)匹配

逻辑与都匹配到的才执行。

代码语言:txt
复制
ansible 'ser*,&prod' --list-hosts 

逻辑非匹配

逻辑非用感叹号(!)表示,主要针对多重条件的匹配规则,使用方式如下:

代码语言:txt
复制
ansible 'web*,!prod' --list-hosts 

多条件组合

代码语言:txt
复制
 ansible 'server*,&prod,!ba' --list-host 

正则匹配

Ansible同样完整支持正则匹配功能,~开始表示正则匹配。

代码语言:txt
复制
ansible '~server(a|b)' --list-host

使用正则检测 www.example.comnew.example.comblog.example.com的存活

代码语言:txt
复制
ansible "~(www|new|blog)\.example\.(com|org)" --list-hosts

Ansible配置文件

ansible配置文件默认位置:/etc/ansible/ansible.cfg

配置选项

查看ansible.cfg的配置项

代码语言:txt
复制
[student@workstation ansible]$  grep "^\[" /etc/ansible/ansible.cfg
[defaults]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]

常用两个选项解读

代码语言:txt
复制
[defaults]
inventory    	= /home/student/ansible/inventory	#主机清单文件的位置
roles_path   	= /home/student/ansible/roles		#角色路径
remote_user  	= devops							#远程执行用户
ask_pass     	= Flase								#是否询问密码
forks		 	= 5									#并发数		
sudo_user	 	= root								#切换root用户
ask_sudo_pass	= True								#询问是否需要密码

[privilege_escalation]
become=True											#是否提权
become_method=sudo									#提权方式
become_user=root									#默认提权的用户
become_ask_pass=False								#提权是否需要密码

官网配置参考

配置注释

#

注释风格1

;

注释风格2

配置文件优先级

1

$ANSIBLE_CONFIG

环境变量

2

./ansible.cfg

当前目录

3

~/.ansible.cfg

用户家目录

4

/etc/ansible/ansible.cfg

默认配置

4.默认配置

代码语言:txt
复制
[student@workstation /]$ ansible --version|grep "config file"
	config file = /etc/ansible/ansible.cfg

3.用户家目录

代码语言:txt
复制
[student@workstation /]$ touch /home/student/.ansible.cfg
[student@workstation /]$ ansible --version|grep "config file"
  config file = /home/student/.ansible.cfg

2.当前目录

代码语言:txt
复制
[student@workstation lala]$ pwd
/tmp/lala
[student@workstation lala]$ ansible --version|grep "config file"
  config file = /tmp/lala/ansible.cfg

1.环境变量

代码语言:txt
复制
[student@workstation lala]$ export ANSIBLE_CONFIG=/opt/ansible.cfg
[student@workstation lala]$ echo $ANSIBLE_CONFIG
/opt/ansible.cfg

[student@workstation lala]$ sudo touch /opt/ansible.cfg
[student@workstation lala]$ ansible --version | grep "config file"
ansible 2.3.1.0
  config file = /opt/ansible.cfg

ad-hoc

简介

ad hoc 指的临时意思,就像在命令行写的shell命令就是临时命令,在文件中写的shell命令就是脚本

ad hoc 就是在命令行直接执行的内容

语法

ansible host-pattern -m 模块 -a ‘模块参数’

host-pattern是inventory中定义的主机或主机组,可以使用“.”或“*”或“:”等特殊字符的匹配型字符串,host-pattern是必须项,不可忽略。

模块

位置

Ansible模块存放位置:/usr/lib/python2.7/site-packages/ansible/modules。

官网模块描述信息

官网模块分类信息

帮助

ansible-doc -l 查看列表

ansible-doc modulename 查看模块帮助文件

维护

ansible-doc文档中METADATA描述了谁在维护该模块,status记录了模块开发状态。

supported_by

记录了哪些社区在维护该模块

core

Ansible核心开发人员维护

curated

社区的合作伙伴维护。curated模块需要Ansible社区审核才能提交变更。伴随ansible core模块一并打包

community

由其他开源社区维护,Ansible核心开发人员和合作伙伴不提供支持,伴随ansible core模块一并打包

详细信息参考

如果想实现自定义功能,可以自己编写模块;Ansible会从变量ANSIBLE_LIBRARY中查找模块。

如果该变量未设置,将会从ansible.cfg配置文件library=设置的位置查找模块;ansible命令也会在./library位置查找模块。

更多的信息参考

下一节将具体介绍更多的模块使用方法

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主机清单-inventory
    • 简介
      • 静态inventory
        • 单个主机
        • 主机组
        • 嵌套组
        • 简化表达式
    • 模糊匹配
      • *匹配
        • 逻辑或匹配
          • 逻辑与(&)匹配
            • 逻辑非匹配
              • 多条件组合
                • 正则匹配
                • Ansible配置文件
                  • 配置选项
                    • 配置注释
                      • 配置文件优先级
                      • ad-hoc
                        • 简介
                          • 语法
                          • 模块
                            • 位置
                              • 帮助
                                • 维护
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档