首页 > 系统相关 >Linux架构24 ansible之get_url模块, 服务管理模块, 用户管理模块, 定时任务模块, 挂载模块, 防火墙模块, 解压模块

Linux架构24 ansible之get_url模块, 服务管理模块, 用户管理模块, 定时任务模块, 挂载模块, 防火墙模块, 解压模块

时间:2024-03-08 17:23:45浏览次数:23  
标签:24 group name get state ansible 模块 m01 root

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

相关文章

  • 24电磁学A笔记
    目前截至3.8第零章数学基础......
  • 2024哈佛-麻省数学竞赛(HMMT)2月锦标赛 团体赛第9题
    [55](题目分数)在一个200*200的网格表的每个单元格上放置一辆汽车,它面向四个基本方向之一。在一步操作中,选择一辆前面没有汽车立即挡住的汽车,并将其向前滑动一个单元格。如果一步操作会导致汽车离开网格,则将该汽车移除。对初始放置方法的要求是,一定存在一系列操作,最终可以将所有汽......
  • 2024.03.08
       第四天所花时间(包括上课)2h代码量(行)130行博客量(篇)2篇了解到的知识点无多少新的知识点,主要是对前三天的内容进行复习,并且进行编写。            protectedvoidonCreate(BundlesavedInstanceState){super.onC......
  • 【2024-03-05】分析矛盾
    20:00黄师塔前江水东,春光懒困倚微风。桃花一簇开无主,可爱深红爱浅红?                                                 ——《江畔独步寻花·其五》唐·杜甫今天下午约......
  • CVPR2024 | Point Transformer V3: 更简单、更快、更强!
    前言 本文没有动机在注意力机制内寻求创新。相反,它专注于在点云处理的背景下克服现有的准确性和效率之间的权衡,利用scale的力量。从3D大规模表示学习的最新进展中汲取灵感,我们认识到模型性能更多地受到规模的影响,而不是复杂设计的影响。因此,本文提出了PointTransformerV3(PTv3),它......
  • 【2024-03-04】幸福法宝
    20:00人,充满劳绩,但仍诗意地栖居。                                                 ——荷尔德林由于小区的名校要被搬迁合并的原因,我跟何太都被拉进了“组织群”,试图......
  • MATLAB----遗传算法及Simulink延时模块实例
    clctic%%参数初始化maxgen=100;%进化代数,即迭代次数,初始预定值选为100sizepop=200;%种群规模,初始预定值选为100pcross=0.9;%交叉概率选择,0和1之间,一般取0.9pmutation=0.01;%变异概率选择,0和1之间,一般取0.01individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%种群......
  • Get File For Streaming Upload文件上传
    GetFileForStreamingUpload:获取本地文件转换成流对象   [Documentation]data参数中objectId、fileName是指当前要上传设备文件的对象id和对象的文件名(每一个对象点击都是不一样的)create  session  api  http://172.16.200.150:30091${file}......
  • 2024-3-8 vite代码快捷键
    1.点击“设置”,选择“用户代码片段”2.输入vue,回车,要选择vue.json文件:3.在文件中写以下内容:其中,“vt”是可以自己设置的快捷方式,在文件中写入下面内容4.在新建的vue文件中输入“vt”,点击回车:5.得到我们要的代码块:......
  • 2024年度计算机技术与软件专业技术资格(水平)考试工作计划
     首页政策法规考试介绍考试安排考试用书考试研究与对外交流各地联系方式2024年03月08日 丨回到首页 当前位置:首页>考试安排2024年度计算机技术与软件专业技术资格(水平)考试工作计划2024-03-05 来源:中国计算机技术职业资格网声明:本网(www.rua......