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'

11、Hostname模块

功能:管理主机名

范例:

ansible node1 -m hostname -a "name=websrvr"

ansible 10.0.0.18 -m hostname -a 'name=node18.example.com'

12、Cron模块

功能:计划任务

支持时间:minute,hour,day,month,weekday

范例:

#备份数据库脚本

mysqldump -A -F --single-transaction --master-data=2 -q -uroot |gzip > /data/mysql_`date +%F_%T`.sql.gz

#创建任务

ansible 10.0.0.8 -m cron -a ' hour=2 minute=30 weekday=1-5 name="backup mysql" job=/root/mysql_backup.sh'

ansible websrvs -m crom -a "'minute=*/5 job='/usr/sbin/ntpdate ntp.aliyun.com &>/dev/null ' name=Synctime"


#启用计划任务

ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.20.0.1 &> /dev/null' name=Synctime disabled=no" 

#删除任务

ansible websrvs -m cron -a "name='backup mysql' state=absent"

ansible websrvs -m crom -a 'state=absent name=Synctime'

13、Yum和Apt模块

功能:

yum管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其他版本

apt模块管理Debian相关版本的软件包

范例:

ansile websrvs -m yum -a 'name=httpd state=present' #安装

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y_zilong

一分钱的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值