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=nodest:远程主机上的目标路径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相关文件和常用模块的主要内容,如果未能解决你的问题,请参考以下文章
Ansible playbooks入门和编写规范Ansible Playbooks常用模块介绍常用模块集合