【command】
    command module 是个可以在远端上执行指令的指令模组 (Commands Modules),刚入门 Ansible 会用 module 不多?只要 Linux Shell 会通的指令都可以透过它使用。但它不支持变数 (variables) 和 <, >, |, ; 和 & 等运算,若有这类需求请改用 shell module。
    image.png
    实例:
    1.当文件不存在是,才执行create命令,如果存在则不执行
    - name: create .ssh directory
    command: mkdir .ssh creates=.ssh/

    2.先切换目录,再执行命令
    - name: cat /etc/passwd
    command: cat passwd
    args:
    chdir: /etc // 切换到/etc目录

    【copy】
    模块是从本地复制档案到远端的档案模组 (Files Modules),与fetch模块相反的操作。
    实例:
    1.复制文件到远端服务器(被文件/app/file1.txt复制到远端服务器/home/testuser/上,并改用户属组为gelcw:testuser 权限为0644,并把原有的文件备份)
    - name: copy file to remote node
    copy:
    src: /app/file1.txt
    dest: /home/testuser/
    ower: testuser
    group: testuser
    mode: 0644
    backup: yes //只有内容变化才会备份

    2.复制文件到远端服务器(被文件/app/file1.txt复制到远端服务器/home/testuser/上,并改用户属组为 gelcw:testuser 权限为chmod u=rw,g=r,o=r)
    - name: copy file to remote node
    copy:
    src: /app/file1.txt
    dest: /home/testuser/
    ower: testuser
    group: testuser
    mode: “u=rw,g=r,o=r”

    【file】
    module 是在远端建立和删除档案 (file)、目录 (directory)、软连结 (symlinks) 的档案模组 (Files Modules)。其类似的 Linux 指令为 chown, chown, ln, mkdir 和 touch。

    实例:
    1.创建文件,并设定权限为644
    - name:touch a file
    file:
    path: /app/test
    state: touch
    mode: “u=rw,g=r,o=r”

    2.创建目录 并设置用户属组和权限
    - name: mkdir file
    file:
    path: /app/test/dir1
    state: directory
    owner: testuser
    mode: “0700”

    3.创建软连接
    - name: create a symlink
    file:
    src: /app/test
    dest: /home/testuser/test
    state: link

    【lineinfile】
    是一个可用正则表达式对文件进行插入或取代文字的档案模组 (Files Modules)。其类似的 Linux 指令为 sed
    参数:
    path参数 :必须参数,指定文件的路径。
    line参数 : 使用此参数指定休修改的文本内容。
    regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
    state参数:当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。
    backrefs参数:当设置为yes时,如果正则表达没有匹配成功,则不会追加到文件末尾,反之,默认在没有匹配成功时直接追加
    insertafter参数:一般用于在指定行之后插入内容
    insertbefore参数:一般用于在指定行之前插入内容
    backup参数:是否在修改文件之前对文件进行备份。
    create参数 :当要操作的文件并不存在时,是否创建对应的文件

    实例:
    1.替换指定开头的行,把以a 开头的这一整行替换为change line
    - name: lineinfile-model test
    hosts: 10.163.89.201
    tasks:
    - name: change
    lineinfile:
    dest: /root/ansible-test/lineinfile.txt
    regexp: ‘^a=’ //匹配以a开头的行,并整行替换为 change line
    line: ‘change line’

    1. - name: insertafter<br /> lineinfile:<br /> dest: /root/ansible-test/lineinfile.txt<br /> insertafter: '^c=3' //匹配以c=3开头的行,并在该行的下一行加入hhhhhh<br /> line: 'hhhhhh'
    2. - name: insertbefore<br /> lineinfile:<br /> dest: /root/ansible-test/lineinfile.txt<br /> insertbefore: '^b=2' //匹配以b=2开头的行,并在该行的上一行加入eeeeee<br /> line: 'eeeeee'
    3. - name: delete line<br /> lineinfile:<br /> dest: /root/ansible-test/lineinfile.txt<br /> state: absent //删除,<br /> regexp: '^d=4' //匹配到开头为d=4的行

    【services】
    用来管理远端系统服务的系统模组 (System Modules)。其类似的 Linux 指令为 service。
    参数
    arguments:给命令行提供一些选项 2
    enabled:是否开机启动 yes|no
    name:必选项,服务名称
    pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
    runlevel:运行级别6 sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟7 state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)

    实例:启动mysql
    - name: start mysql
    hosts: 10.163.89.201
    tasks:
    - name: start mysql service
    service:
    name: mysqld //mysqld 必须是服务名,此外这里的name是必选项
    state: started //可以选择started,stopped,restarted,reloaded

    【shell】
    可以在远端用 /bin/sh 执行指令的指令模组 (Commands Modules),支持变数 (variables) 和 <, >, |, ; 和 & 等运算
    参数:
    free_form参数 :必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考 command 模块。
    chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
    creates参数 :使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command 模块中的解释。
    removes参数 :使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考 command 模块中的解释。
    executable参数:默认情况下,shell 模块会调用远程主机中的 /bin/sh 去执行对应的命令,通常情况下,远程主机中的默认 shell 都是 bash。如果你想要使用其他类型的 shell 执行命令,则可以使用此参数指定某种类型的 shell 去执行对应的命令。指定 shell 文件时,

    实例:
    —-
    - name: shell model test —channel
    hosts: 10.163.89.201
    tasks:
    - name: print test to file
    shell: echo $date >> //root/ansible-test/shell-2.txt

    【stat】
    用来检查档案状态的档案模组 (Files Modules)。其类似的 Linux 指令为 stat
    实例
    —-
    - name: stat model test
    hosts: 10.163.89.201
    tasks:
    - name: stat test
    stat:
    path: /root/ansible-test/file-mode.txt

    【user】
    管理用户的模块
    参数:
    name参数:必须参数,用于指定要操作的用户名称,可以使用别名 user。
    group参数:用于指定用户所在的基本组。
    gourps参数:此参数用于指定用户所在的附加组。注意,如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合 append 参数使用,否则在默认情况下,当再次使用 groups 参数设置附加组时,用户原来的附加组会被覆盖。
    append参数:如果用户原本就存在多个附加组,默认值 no 表示会覆盖原来的组,如果需要追加且不覆盖,则需设置为yes
    shell参数:此参数用于指定用户的默认 shell。
    uid参数:此参数用于指定用户的 uid 号。
    password参数:此参数用于指定用户的密码(密文)。相当于 /etc/shadow 文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在 python 的命令提示符下输入如下命令,生成明文密码对应的加密字符串
    import crypt; crypt.crypt(‘666666’)
    expires参数:此参数用于指定用户的过期时间,相当于设置 /etc/shadow 文件中的的第8列,比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的 unix 时间戳,使用命令 “date -d 2018-12-31 +%s” 获取到的时间戳为1546185600,所以,当设置 expires=1546185600 时,表示用户的过期时间为2018年12月31日0点0分,设置成功后,查看远程主机的 /etc/shadow 文件,对应用户的第8八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix 时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在 Linux 和 FreeBSD 系统中使用。
    comment参数:此参数用于指定用户的注释信息。
    state参数:此参数用于指定用户是否存在于远程主机中,可选值有 present、absent,默认值为 present,表示用户需要存在,当设置为 absent 时表示删除用户。
    remove参数:当 state 的值设置为 absent 时,表示要删除远程主机中的用户。但是在删除用户时,不会删除用户的家目录等信息,这是因为 remove 参数的默认值为 no,如果设置为yes,在删除用户的同时,会删除用户的家目录。当 state=absent 并且 remove=yes 时,相当于执行 “userdel —remove” 命令。

    实例1:
    - name: user model test
    hosts: 10.163.89.201
    tasks:
    - name: create group
    group: //模块:组
    name: test //组名 test
    gid: 1005 //组ID

    • name: create user
      user:
      name: test
      group: test
      uid: 1005
      password: ‘$6$jExJiv4I.gKnM1O5$kAmlaH6229dLMh4FfVcNkiEZzPMfQ.fo5zS1QnS
      n5sanD9gTaK.Jbi9KC8jflhQV./EVBmTVAsFO.cxxm1E6/1’ //密码 密文
      state: present /状态 present是新增 absent 是删除
      system: yes //yes 代表是普通用户