美文网首页
03-常用模块(三)-系统模块

03-常用模块(三)-系统模块

作者: 洛神鬼道 | 来源:发表于2018-09-03 13:59 被阅读0次

    Ansible

    Ansible version : 2.6.2

    常用模块(三)

    系统模块

    系统模块详细地址:https://docs.ansible.com/ansible/latest/modules/list_of_system_modules.html

    • cron
    • hostname
    • ping
    • user
    • service
    • systemd

    模块:cron

    概述
    • 【cron】模块管理crontab和环境变量条目。允许创建环境变量和命名的crontab条目,更新或删除它们。
    • 管理环境变量时:不添加注释行,但当模块需要查找/检查状态时,使用name参数来查找环境变量定义行。
    • 管理crontab作业时,该模块包含一行,其中包含crontab条目的描述为"#Ansible: <name>"或者对应于传递给模块的name将来Ansible /模块调用都使用这个条目来查找/检查状态。name参数应该是唯一的,更改name值将导致创建一个新的cron任务(或删除另一个任务)。
    • 使用%等符号时,必须正确转义它们。
    参数
    参数(*必选) 默认 注释
    backup no 如果设置,则在修改之前备份crontab,备份位置则由返回值里面的backup_file输出
    cron_file 如果指定,使用这个文件来替代一个单独用户的crontab。如果这是一个相对路径,他将通过/etc/cron.d解释(如果绝对路径,一般是/etc/crontab)。许多发型版本期望名字部分仅由大写和小写字母,数字,下划线和连字符组成。如果使用该参数,则必须指定用户
    day * 哪天执行计划任务
    disabled no 在crontab里面禁用(注释)作业
    env no 如果设置,则管理crontab的环境变量。新变量添加在crontab之上。 namevalue参数是环境变量的名称和值。
    hour * 哪小时执行计划任务
    insertafter state=presentenv一起使用。如果指定,则在声明指定的环境变量之后插入环境变量。
    insertbefore state=presentenv一起使用。如果指定,则在声明指定的环境变量之前插入环境变量。
    job 要执行的命令或者如果设置了env,则为环境变量的值。该命令不应包含空格。就像state=present一样。
    minute * 哪分钟计划任务
    month * 哪月执行计划任务
    name crontab条目的描述,如果设置了env,则为环境变量的名称。需要state=absent。注意name没有设置env并且state=present,一个新的条目始终创建,而不管已经存在的。
    reboot no 如果任务必须在重启之后执行。该选项已弃用。用户应该使用special_time
    special_time 特殊的时间规范的昵称。选项: reboot yearly annually monthly weekly daily hourly
    state present 确保作业或环境变量存在或不存在。
    user root 修改crontab的特定用户
    weekday * 哪周执行计划任务
    例子
    playbook

    指定时间执行

    - 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"
        job: "ls -alh > /dev/null"
    

    删除一个旧条目

    - name: 'Ensure an old job is no longer present. Removes any job that is prefixed by "#Ansible: an old job" from the crontab'
      cron:
        name: "an old job"
        state: absent
    

    重启之后,执行

    - name: Creates an entry like "@reboot /some/job.sh"
      cron:
        name: "a job for reboot"
        special_time: reboot
        job: "/some/job.sh"
    

    创建环境变量

    - name: Creates an entry like "PATH=/opt/bin" on top of crontab
      cron:
        name: PATH
        env: yes
        value: /opt/bin
    

    在声明的指定变量之后

    - name: Creates an entry like "APP_HOME=/srv/app" and insert it after PATH declaration
      cron:
        name: APP_HOME
        env: yes
        value: /srv/app
        insertafter: PATH
    

    环境变量变量

    - name: Removes "APP_HOME" environment variable from crontab
      cron:
        name: APP_HOME
        env: yes
        state: absent
    

    模块:hostname

    概要
    • 设置系统的主机名,支持大多数操作系统/分发,包括使用systemd的操作系统。
    • 这个模块不会修改/etc/hosts,可以使用【template】或者【replace】模块修改。
    • Windows, HP-UX ,AIX不支持。
    参数
    参数(*必选) 默认 注释
    * name 主机名
    例子
    playbook
    - hostname:
        name: web01
    

    模块:ping

    概要
    • 这个模块总是在成功之后返回pong。在playbook中毫无意义。但是在使用/usr/bin/ansible来确认登录可用和配置了可用的python
    • 这个不是IMCP的ping,只是远端的python简单的测试模块
    • 对于windows目标,使用win_ping
    • 对于网络目标,使用net_ping
    参数
    参数(*必选) 默认 注释
    data pong 要返回ping返回值的数据。如果此参数设置为crash,则模块将导致异常。
    例子
    playbook

    设置data值为crash

    # Induce an exception to see what happens
    - ping:
        data: crash
    
    返回值
    关键字 返回/类型 描述
    ping success/字符串 data参数提供的值

    模块:user

    概述
    • 管理用户账户和用户属性
    • 对于windows主机,使用win_user模块
    参数
    参数(*必选) 默认 注释
    append no 如果为yes,添加用户到指定组,如果为no,则仅将用户添加到组中指定的组,并将其从所有其他组中删除。
    comment (可选)设置用户帐户的描述(也称为GECOS)。
    create_home yes 除非设置为no,否则将在创建帐户或主目录不存在时为用户创建主目录。从ansible 2.5版本开始,从createhome变为create_home
    expires 设置用户过期时间。它将在不支持此功能的平台上被忽略。当前支持GNU/Linux, FreeBSD, and DragonFlyBSD。从版本2.6开始,您可以删除指定负值的到期时间。当前支持 GNU/Linux and FreeBSD
    force no state=absent的时候会受到影响,它强制删除支持平台上的用户和关联目录。与userdel --force行为一样。
    generate_ssh_key no 是否为相关用户生成SSH密钥。不会覆盖已存在的SSH key。
    group (可选)设置用户的主要组(取一个组名)
    groups 将添加用户组列表。当设置为空字符串''null或者~,用户将从除主要组之外的所有组中删除。在yaml中~意思是 null
    hidden yes 仅限Darwin/OS X,可选地将用户隐藏在登录窗口和系统首选项中。 如果使用系统选项,则默认值为“True”。
    home 可选设置用户的家目录
    local no 强制在实现它的平台上使用“本地”命令备选方案。当您想要操作本地用户时,这在使用集中身份验证的环境中很有用。 它使用luseradd而不是useradd
    login_class (可选)设置用户的登录类,这是大多数BSD操作系统的一项功能。
    move_home no 当使用home=则设置为yes,尝试移动用户的旧目录到指定目录,新目录必须不存在并且旧目录必须存在。
    * name 要创建,删除或修改的用户的名称。
    non_unique no (可选)与-u选项一起使用时,此选项允许将用户ID更改为非唯一值。
    password (可选)将用户密码设置为此加密值。在Darwin / OS X系统上,此值必须是明文。
    password_lock 锁定密码(usermod -L,pw lock,usermod -C)。但是实现在不同平台上有所不同.此选项并不总是意味着用户无法通过其他方法登录。此选项不会禁用用户,只会锁定密码。请勿在同一任务中更改密码。目前支持Linux,FreeBSD,DragonFlyBSD,NetBSD。
    remove no state=absent时生效,它试图删除与用户关联的目录。与userdel --remove行为相似。
    seuser (可选)在启用selinux的系统上设置seuser类型(user_u)
    shell (可选)设置用户shell。在Mac OS X上,在2.5版之前,非系统用户的默认shell是/usr/bin/false。从2.5开始,Mac OS X上非系统用户的默认shell是/ bin / bash
    skeleton (可选)设置主目录。需要create_home选项
    ssh_key_bits ssh-keygen (可选)指定要创建的SSH密钥的位数。
    ssh_key_comment ansible-generated on $HOSTNAME (可选)定义SSH密钥的注释。
    ssh_key_file .ssh/id_rsa (可选)指定SSH密钥文件名。如果这是一个相对文件名,那么它将相对于用户的主目录。
    ssh_key_passphrase 设置SSH密钥的密码。如果未提供密码,则SSH密钥将默认为没有密码。
    state absent 帐户是否应该存在,如果状态与陈述的不同则采取行动。
    system no 当创建账户state=present,将此设置为yes会使用户成为系统帐户。无法在现有用户上更改此设置。
    uid (可选)设置用户的UID。
    update_password always always:如果密码不同,总会更新密码。on_create只会为新创建的用户设置密码。
    例子

    创建指定uid以及主要的admin组的用户

    - name: Add the user 'johnd' with a specific uid and a primary group of 'admin'
      user:
        name: johnd
        comment: John Doe
        uid: 1040
        group: admin
    

    追加组

    - name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups
      user:
        name: james
        shell: /bin/bash
        groups: admins,developers
        append: yes
    

    删除用户

    - name: Remove the user 'johnd'
      user:
        name: johnd
        state: absent
        remove: yes
    

    创建2048位的ssh key

    - name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa
      user:
        name: jsmith
        generate_ssh_key: yes
        ssh_key_bits: 2048
        ssh_key_file: .ssh/id_rsa
    

    设置过期时间

    - name: Added a consultant whose account you want to expire
      user:
        name: james18
        shell: /bin/zsh
        groups: developers
        expires: 1422403387
    
    

    删除过期时间

    - name: starting at version 2.6, modify user, remove expiry time
      user:
        name: james18
        expires: -1
    

    模块:service

    概述
    • 控制远程主机上的服务。支持的init系统包括BSD init,OpenRC,SysV,Solaris SMF,systemd,upstart。
    • 对于Windows目标,请改用【win_service】模块。
    参数
    参数(*必选) 默认 注释
    arguments 在命令行上提供了其他参数
    enabled 服务是否应该在启动时启动。至少需要state和enabled中的一个。可选值yes/no
    * name service名称
    pattern 如果服务没有响应status命令,将要查找的子字符串命名为ps命令的输出中的子字符串作为状态结果的替代。如果找到该字符串,则假定该服务正在运行。
    runlevel default 仅适用于OpenRC init脚本(例如:Gentoo)。此服务所属的运行级别。
    sleep 如果正在重新启动服务,则在停止和启动之间休眠多少秒,这有助于解决在发出停止进程信号后立即退出的错误行为的init脚本。
    state started/stopped是幂等操作,除非必要,否则不会执行。restarted总会执行。reloaded总会执行。至少需要state和enabled中的一个。注意即使服务没启动reloadedj也将会启动服务。甚至你选择的init系统不正常。
    use auto 【service】模块实际上使用系统特定的模块,通常通过自动检测,此设置可以强制特定模块。通常它使用'ansible_service_mgr'事实的值,并在找不到匹配时回退到旧的'service'模块。

    例子

    如果没启动,则启动服务

    - name: Start service httpd, if not running
      service:
        name: httpd
        state: started
    

    重启服务

    - name: Restart service httpd, in all cases
      service:
        name: httpd
        state: restarted
    

    启用服务

    - name: Enable service httpd, and not touch the running state
      service:
        name: httpd
        enabled: yes
    

    基于进程启动

    - name: Start service foo, based on running process /usr/bin/foo
      service:
        name: foo
        pattern: /usr/bin/foo
        state: started
    

    带参数重启

    - name: Restart network service for interface eth0
      service:
        name: network
        state: restarted
        args: eth0
    

    模块:systemd

    概述
    • 控制远程主机上的systemd服务。
    参数
    参数(*必选) 默认 注释
    daemon_reload no 在执行任何其他操作之前运行daemon-reload,以确保systemd已读取任何更改。
    enabled 服务是否应该在启动时启动。至少需要state和enabled中的一个。可选值:yes/no
    force 是否覆盖现有符号链接。可选值:yes/no
    masked 无论是否应该屏蔽unit,屏蔽uit是不可能启动的。可选值:yes/no
    name 服务名称。在chroot环境中使用时,您总是需要指定全名,即(crond.service)。
    no_block no 不要同步等待请求的操作完成。排队的工作将在没有Ansible阻止的情况下继续完成。
    state started/stopped是幂等操作,除非必要,否则不会运行命令。restarted启动将始终弹出服务。reloaded将始终重新加载。
    user no 运行systemctl,与调用用户的服务管理器对话,而不是与系统的服务管理器对话。
    注意
    • 自从2.4开始,以下选项之一stateenabledmaskeddaemon_reload,除daemon_reloa'之外的所有内容都需要name
    • 在2.4之前,你总是需要name
    例子

    起服务

    - name: Make sure a service is running
      systemd:
        state: started
        name: httpd
    

    重启服务前先reload

    - name: restart service cron on centos, in all cases, also issue daemon-reload to pick up config changes
      systemd:
        state: restarted
        daemon_reload: yes
        name: crond
    

    强制重载配置

    - name: just force systemd to reread configs (2.4 and above)
      systemd:
        daemon_reload: yes
    

    相关文章

      网友评论

          本文标题:03-常用模块(三)-系统模块

          本文链接:https://www.haomeiwen.com/subject/vyxkwftx.html