3.get_url模块
- name: Download foo.conf get_url: url: http://example.com/path/file.conf dest: /etc/foo.conf mode: '0440' checksum: md5:b5bb9... #公司内部库,验证文件是否为要求的文件 checksum: sha256:b5bb9... #另一种验证方式 #下载文件 [root@m01 ~]# ansible 'web_group' -m get_url -a 'url=https://www.mumusir.com/download/1.txt dest=/tmp/ mode=777' #验证文件再下载(验证失败不下载) (checksum指定加密方式,这里指定为md5,后面为文件的md5值) [root@m01 ~]# ansible 'web_group' -m get_url -a 'url=https://www.mumusir.com/download/1.txt dest=/tmp/ mode=777 checksum=md5:f447b20a7fcbf53a...' #查看文件的md5值 [root@m01 ~]# md5sum 1.txt
Ansible服务管理模块
1.service/systemd
- name: Start service httpd, if not started service: name: httpd #服务 state: #状态 started #启动 stopped #停止 restarted #重启 reloaded #重载 enable: #是否加入开机自启 yes no #启动服务 [root@m01 ~]# ansible 'web_group' -m service -a 'name=httpd state=started' #重启服务 [root@m01 ~]# ansible 'web_group' -m service -a 'name=httpd state=restarted'
Ansible用户管理模块
1.group模块
- name: Ensure group "somegroup" exists group: name: somegroup #组名 state: #状态 present #创建用户组 absent #删除用户组 gid: 666 #指定gid #创建用户组(如果用户组已存在,会修改gid) [root@m01 ~]# ansible 'web_group' -m group -a 'name=www gid=666 state=present' #修改(gid改成77) [root@m01 ~]# ansible 'web_group' -m group -a 'name=www gid=77 state=present' #查看组 [root@web01 ~]# vim /etc/group #删除用户组 [root@m01 ~]# ansible 'web_group' -m group -a 'name=www gid=666 state=absent'
2.user模块
user: name: johnd #用户名 comment: John Doe #用户备注 uid: 1040 #指定uid group: admin #指定用户组(这里是组名,不是组id) shell: /bin/bash #指定用户登录脚本 generate_ssh_key: #是否创建密钥对 yes no ssh_key_bits: 2048 #秘钥长度 ssh_key_file: .ssh/id_rsa #秘钥文件位置 state: absent #删除用户 present #创建用户 remove: yes #删除用户的家目录 expires: #用户过期时间 #单机创建用户命令 (-s指定用户登录脚本(这里不用用户登录),-M不创建家目录) [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M #创建用户,不需要登录,有家目录(state默认为present,可不写) [root@m01 ~]# ansible 'web_group' -m user -a 'name=www uid=666 group=www shell=/sbin/nologin state=present' #只删除用户(当组的名字和用户名相同时,组也被删除) [root@m01 ~]# ansible 'web_group' -m user -a 'name=www state=absent' #删除用户和家目录 [root@m01 ~]# ansible 'web_group' -m user -a 'name=www state=absent remove=yes' 注意: 1.当组的名字和用户名相同是,组也被删除 2.当组的下面有多个用户,即使组的名字和用户名相同也不会删除
Ansible定时任务模块
1.cron模块
- name: Ensure a job that runs at 2 and 5 exists. Creates an entry like "0 5,2 * * ls -alh > /dev/null" cron: name: "check dirs" #脚本的备注 minute: "0" #分钟 hour: "5,2" #小时 day: #日 month: #月 weekday: #周 job: "ls -alh > /dev/null" #执行的内容 disabled: yes #注释定时任务 no #解除注释 #添加定时任务(有名字,再次执行就是更新) [root@m01 ~]# ansible 'web_group' -m cron -a 'name=test minute=* hour=* day=* month=* weekday=* job="/bin/bash /tmp/touch.sh"' [root@web01 ~]# crontab -l #Ansible: test * * * * * /bin/bash /tmp/touch.sh [root@m01 ~]# ansible 'web_group' -m cron -a 'name=test minute=3,5 hour=8-11 day=*/2 job="/bin/bash /tmp/touch.sh"' #添加定时任务(没名字,再次执行继续添加,远端查看定时任务注释名称为None) [root@m01 ~]# ansible 'web_group' -m cron -a 'minute=* hour=* day=* month=* weekday=* job="/bin/bash /root/mkdir.sh"' #不配置时间常数,默认是* [root@m01 ~]# ansible 'web_group' -m cron -a 'name=test job="/bin/bash /tmp/touch.sh"' [root@web01 ~]# crontab -l #Ansible: test * * * * * /bin/bash /tmp/touch.sh #删除定时任务(只能根据名字删除,必须指定name参数) [root@m01 ~]# ansible 'web_group' -m cron -a 'name=test state=absent' #删除定时任务(添加任务未给名字,名字写None) [root@m01 ~]# ansible 'web_group' -m cron -a 'name=None state=absent' #注释定时任务(job得添加,不然会报错) 一般用不到 [root@m01 ~]# ansible 'web_group' -m cron -a 'name=test job="/bin/bash /tmp/touch.sh" disabled=yes' [root@web01 ~]# crontab -l #Ansible: test #* * * * * /bin/bash /tmp/touch.sh #解除注释 [root@m01 ~]# ansible 'web_group' -m cron -a 'name=test job="/bin/bash /tmp/touch.sh" disabled=no'
Ansible磁盘挂载模块
1.mount模块
1)准备挂载的服务器
#1.安装nfs模块 [root@m01 ~]# ansible 'nfs' -m yum -a 'name=nfs-utils state=present' #2.配置nfs(配置用no_all_squash) [root@m01 ~]# ansible 'nfs' -m copy -a 'content="/data 172.16.1.0/24(rw,sync,no_all_squash)" dest=/etc/exports' #3.创建目录 [root@m01 ~]# ansible 'nfs' -m file -a 'name=/data state=directory' #2.配置nfs(配置用all_squash) [root@m01 ~]# ansible 'nfs' -m copy -a 'content="/data 172.16.1.0/24(rw,sync,all_squash)" #3.创建目录 [root@m01 ~]# ansible 'nfs' -m file -a 'name=/data state=directory owner=nfsnobody group=nfsnobody' #4.启动服务(加入开机自启) [root@m01 ~]# ansible 'nfs' -m service -a 'name=/data state=started enabled=yes'
2)mount模块挂载
- name: Mount DVD read-only mount: path: /mnt/dvd #本地要挂载的目录 src: /dev/sr0 #远端挂载点目录 fstype: iso9660 #挂载类型 opts: ro,noauto #/etc/fstab参数(默认会写上,不用管他) state: present #开机才挂载,将配置写到自动挂载 mounted #直接挂载,并且配置写到自动挂载 (常用) unmounted #取消挂载,但是不清除/etc/fstab自动挂载配置 absent #取消挂载,并清除/etc/fstab自动挂载配置 (常用) #挂载(被控端没有挂上,而是写到开机启动的文件/etc/fstab中,重启或mount -a就会挂上) [root@m01 ~]# ansible 'web_group' -m mount -a 'src=172.16.1.31:/data path=/tmp fstype=nfs opts=defaults state=present' #挂载(被控端挂上,并写到开机启动的文件/etc/fstab中) [root@m01 ~]# ansible 'web_group' -m mount -a 'src=172.16.1.31:/data path=/tmp fstype=nfs opts=defaults state=mounted' #取消挂载(清除开机自启/etc/fstab) [root@m01 ~]# ansible 'web_group' -m mount -a 'src=172.16.1.31:/data path=/tmp fstype=nfs opts=defaults state=absent' #取消挂载(不清除开机自启/etc/fstab) [root@m01 ~]# ansible 'web_group' -m mount -a 'src=172.16.1.31:/data path=/tmp fstype=nfs opts=defaults state=unmounted'
Ansible防火墙模块
1.selinux模块
- name: Enable SELinux selinux: policy: targeted state: disabled #关闭selinux [root@m01 ~]# ansible 'all' -m selinux -a 'state=disabled'
2.firewalld模块
- firewalld: service: https #指定服务 permanent: #是否永久生效 yes #永久生效 no #临时生效(默认) state: enabled #状态 enabled #允许 disabled #禁止 port: #端口 8081/tcp #指定端口 161-162/udp #端口范围 rich_rule: #富规则 source: 192.0.2.0/24 #指定网段或IP zone: trusted #指定空间 # 允许访问http服务(如果防火墙没启动会报错) permanent为永久生效,被控端当前需要重新加载才生效 [root@m01 ~]# ansible 'web_group' -m firewalld -a 'service=http permanent=yes state=enabled' # 启动防火墙 [root@m01 ~]# ansible 'web_group' -m systemd -a 'name=firewalld state=started' # 被控端防火墙重新加载 [root@web01 ~]# firewall-cmd --reload # 被控端查看防火墙设定 [root@web01 ~]# firewall-cmd --list-all # 允许访问80端口 [root@m01 ~]# ansible 'web_group' -m firewalld -a 'port=80/tcp permanent=yes state=enabled' # 临时生效,允许访问80端口(远端马上生效,重启就没了) [root@m01 ~]# ansible 'web_group' -m firewalld -a 'port=80/tcp permanent=no state=enabled' #允许10.0.0.0/24网段访问22端口 (富规则) [root@m01 ~]# ansible 'web_group' -m firewalld -a 'rich_rule="rule family=ipv4 source address=10.0.0.1 service name=http accept" state=enabled' #配置网段白名单(必须要带permanent参数) [root@m01 ~]# ansible 'web_group' -m firewalld -a 'source=10.0.0.1/24 zone=trusted state=enabled permanent=no' #查看空间规则 [root@web01 ~]# firewall-cmd --list-all --zone=trusted
Ansible解压缩模块
1.unarchive模块
- name: Extract foo.tgz into /var/lib/foo unarchive: src: foo.tgz #压缩包的路径及文件 dest: /var/lib/foo #压缩到远端服务器的位置 remote_src: yes #压缩包在被控端服务器 no #压缩包在控制端 #控制端解压到远端服务器上 [root@m01 ~]# ansible 'web_group' -m unarchive -a 'src=/root/php.tar.gz dest=/tmp/' #控制端把php.tar.gz拷贝到远端服务器 [root@m01 ~]# ansible 'web_group' -m copy -a 'src=/root/php.tar.gz dest=/root/' #把远端服务器的/root/php.tar.gz解压到远端的/tmp/下 [root@m01 ~]# ansible 'web_group' -m unarchive -a 'src=/root/php.tar.gz dest=/tmp/ remote_src=yes'
2.archive模块
- name: Compress directory /path/to/foo/ into /path/to/foo.tgz archive: path: /path/to/foo #要打包的内容 dest: /path/to/foo.tgz #包位置与名字 #打包被控端的文件到被控端 [root@m01 ~]# ansible 'web_group' -m archive -a 'path=/data dest=/tmp/data.tar.gz'
标签:24,group,name,get,state,ansible,模块,m01,root From: https://www.cnblogs.com/ludingchao/p/18061453