Ansible相关文件和常用模块

Posted y_zilong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible相关文件和常用模块相关的知识,希望对你有一定的参考价值。

1、配置文件

/etc/ansible/ansible.cfg    #主配置文件

/etc/ansible/hosts             #主机清单

/etc/ansible/roles              #存放角色的目录

2、 ansible主配置文件

Ansible的配置文件可以放在多个不同地方,优先级从高到低顺序如下

ansible_config    #环境变量

./ansible.cfg        #当前目录下的ansible.cfg

~/.ansible.cfg      #当前用户家目录下的.ansible.cfg

/etc/ansible/ansible.cfg      #系统默认配置文件

Ansible的默认配置文件 /etc/ansible/ansible.cfg

[defaults]
#inventory      = /etc/ansible/hosts      #主机列表配置文件
#library        = /usr/share/my_modules/  #库文件存放目录 
#remote_tmp     = ~/.ansible/tmp          #临时py命令文件存放在远程主机目录
#local_tmp      = ~/.ansible/tmp          #本机的临时命令执行目录
#forks          = 5           # 默认并发数
#sudo_user      = root        #默认sudo用户
#ask_sudo_pass = True         #每次执行ansible命令是否询问ssh密码
#ask_pass      = True
#transport      = smart
#remote_port    = 22
#module_lang    = C
#module_set_locale = False    #检查对应的服务器的host_key,建议取消此行注释,实现第一次连接自动信任目标主机

#log_path = /var/log/ansible.log   #日志文件,建议启用
#module_name = command             #默认模块,可以修改为shell模块

[privilege_escalation]              #普通用户提权配置
#become=True
#become_method=sudo
#become_user=root
#become_ask_pass=False

3、inventory主机清单文件

ansible的主要功能在于批量主机操作,为了便捷的使用其中的部分主机,可以在inventory file将其分组命名

默认的inventory file为/etc/ansible/hosts,生产建议在每个项目目录下创建项目独立的hosts文件

范例:

[webservers]

www1.yzl.com:222

www2.yzl.com

[local]
10.0.0.10 ansible_connection=local

[dbservers]

10.0.0.20

10.0.0.30

[web]

www[1..100].example.com

[db]

10.0.0.[1:100]

4、Ansible相关工具

1、/usr/bin/ansible             #主程序,临时命令执行工具

2、/usr/bin/ansible-doc     #查看配置文档,模块功能查看工具,相当于man

ansible-doc  [options] [module...]

-l,--list          #列出可用模块

-s,--snippet      #显示指定模块的playbook片段

3、/usr/bin/ansible-playbook    #定制自动化任务,编排剧本工具,相当于脚本

ansible-playbook hello.yml

4、/usr/bin/ansible-pull             #远程执行命令的工具

语法:ansible-pull -U <repository> [options] [<playbook.yml>]

5、/usr/bin/ansible-vault           #文件加密工具

格式:ansible-vault   【create|decrypt|edit|view|encrypt|encrypt_string|rekey】

ansible-vault  encrypt hello.yml       #加密

ansible-vault  decrypt hello.yml       #解密

ansible-vault   view     hello.yml       #查看

ansible-vault    edit     hello.yml       #编辑加密文件

ansible-vault    rekey   hello.yml      #修改口令

ansible-vault    create  new.yml       #创建新文件

6、/usr/bin/ansible-concole       #基于console界面与用户交互的执行工具

执行用户@当前操作的主机组(当前组的主机数量)【f:并发数】$

常用子命令:

设置并发数:forks n 例如:forks 10

切换组:cd 主机组   例如:cd web

列出当前组主机列表:list

列出所有的内置命令:?或help

7、/usr/bin/ansible-galaxy         #下载/上传优秀代码或Roles模块的官网平台

ansible-galaxy  search lamp   #搜索项目

ansible-galaxy list          #列出所有已安装的galaxy

#安装galaxy,默认下载到~/.ansible/roles下

ansible-galaxy install geerlingguy.mysql       

ansible-galaxy install geerlingguy.redis

#删除galaxy

ansible-galaxy remove geerlingguy.redis

5、Ansible常用模块

1、command模块

功能:在远程主机执行命令,此为默认模块,可忽略-m选项

注意:此命令不支持 $ VARNAME < > | ; &等,可能用shell模块实现

注意:此模块不具有幂等性

2、shell模块

功能:和command相似,用shell执行命令,支持各种符号,比如各种符号,比如:*  $  > 

注意:此模块不具有幂等性

3、Script模式

功能:在远程主机上运行ansible服务器上的脚本(无需任何权限)

注意:此模块不具有幂等性

范例:ansible websrvs -m script -a /data/test.sh

4、Copy模块

功能:从ansible服务器主控端复制文件到远程主机

注意:srz=file 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件

5、Get_url模块

功能:用于将文件从http、https或ftp下载到被管理机节点上

常用参数如下:

url:下载文件的URL,支持HTTP,HTTPS或FTP协议

dest:下载到目标路径(绝对路径),如果目标是一个目录,就用服务器上面文件的名称,如果目标设置了名称就用目标设置的名称

owner:指定属主

group:指定属组

mode:指定权限

force:如果yes,dest不是目录,将每次下载文件,如果内容改变,替换文件。如果否,则只有在目标不存在时才会下载该文件

checksum:对目标文件在下载后计算摘要,以确保其完整性

范例:ansible websrvs -m get_url -a 'url=http://nginx.ory/download/nginx-1.18.0.tar.gz  dest=/usr/local/src/nginx.tar.gz  checksum="md5:b2d3d2---"'

6、Fetch模块
 
功能:从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录
 

 范例:ansible websrvs -m fetch -a 'src=/root/test.sh dest=/data/scripts'

7、File模块
 

 功能:设置文件属性,创建软链接等

 #创建空文件

ansible all -m file -a 'path=/data/test.txt state=touch'

ansible all -m file -a 'path=/data/test.txt state=absent'

ansible all -m file -a 'path=/root/test.sh owner=yang mode=755'

#创建目录

ansible all -m file -a 'path=/data/mysql state=directory owner=mysql group=mysql'

#创建软链接

ansible all -m  file -a 'src=/data/testfile path|dest|name=/data/testfile-link state=link'

#创建目录

ansible all -m file -a 'path=/data/testdir state=directory'

#递归修改目录属性,但不递归至子目录

ansible all -m file -a 'path=/data/mysql state=directory owner=mysql group=mysql'

#递归修改目录及子目录的属性

ansible all -m file -a 'path=/data/mysql state =directory owner=msyql group=mysql recurse=yes'

8、stat模块

功能:检查文件或文件系统的状态

注意:对于windows目标,请改用win_stat模块

选项:path:文件/对象的完整路径(必须)

常用的返回值判断:

exists:判断是否存在

isuid:调用用户的ID与所有者ID是都匹配

范例:ansible 127.0.0.1 -m stat -a 'path=/etc/passwd'

9、unarchive模块

功能:解包解压缩

实现有两种用法:

1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,此为默认值,可省略
 
2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no
 
常见参数:
 
copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
 
remote_src:和copy功能一样且互斥,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上
 
src:源路径,可以是ansible主机上的路径,也可以是远程主机(被管理端或者第三方主机)上的路径,如果是远程主机上的路径,则需要设置copy=no
 
dest:远程主机上的目标路径
 
mode:设置解压缩后的文件权限
 
范例:
 
ansible all -m unarchive -a 'src=/data/foo.tgz dest=/var/lib/foo owner=wang group=bin'
 
ansible all -m unarchive -a 'src=/tmp/foo.zip dest=/data copy=no mode=0777'
 
ansible all -m unarchive -a 'src=https://example.com/example.zip dest=/data copy=no'
 
ansible websrvs -m unarchive -a 'src=https://releases.ansible.com/ansible/ansible-2.1.6.0-0.1.rc1.tar.gz dest=/data/   owner=root remote_src=yes'
 
ansible websrvs -m unarchive -a 'src=http://nginx.org/download/nginx- 1.18.0.tar.gz dest=/usr/local/src/ copy=no'

10、Archive模块

功能:打包压缩保存在被管理节点

范例:

ansible websrvs -m archive -a 'path=/var/log dest=/data/log.tar.bz2 format=bz2 owner=yang mode=0600'

以上是关于Ansible相关文件和常用模块的主要内容,如果未能解决你的问题,请参考以下文章

Python开发中常用的模块都有哪些?

ansible常用模块之synchronize模块

Ansible playbooks入门和编写规范Ansible Playbooks常用模块介绍常用模块集合

Ansible playbooks入门和编写规范Ansible Playbooks常用模块介绍常用模块集合

ansible使用笔记(二)常用命令使用及常用模块简介

Ansible 自动化运维工具之inventory和常用模块介绍