【问题标题】:Ansible user module check if a user exists or not?Ansible 用户模块检查用户是否存在?
【发布时间】:2023-01-24 01:11:45
【问题描述】:

Ansible user 模块的要求只是检查用户是否存在并且不采取任何行动。

check_mode 有帮助吗?这样的playbook任务应该怎么写呢?

此链接 Ansible playbook to check user exist or display error message 提供了另一种选择。是否可以使用内置的 user 模块来完成这项工作?

【问题讨论】:

    标签: ansible


    【解决方案1】:

    由于 Ansible 主要是一种配置管理工具,可以在其中声明 Desired State

    Ansible user 模块的要求只是检查用户是否存在并且不采取任何行动。

    这已经并且主要是user 模块的默认行为。如果用户已经存在并且不需要更改,模块将只返回 changed: false 并报告 OK。所以它不会采取任何行动。

    对于仅当用户存在时的简单检查,您已经通过 getent 模块找到了 Ansible playbook to check user exist。请注意,与 user 模块相比,它不是“替代品”。

    check_mode 有帮助吗?

    因为check_mode主要是针对Validating tasks

    检查模式只是一种模拟……它非常适合验证一次在一个节点上运行的配置管理剧本。

    这将主要取决于您尝试实现的目标以及运行的行为方式。

    进一步阅读和问答

    【讨论】:

      【解决方案2】:

      简而言之:

      ---
      - name: Check if users exists
        hosts: localhost
        gather_facts: false
        become: true
      
        vars:
          users_to_test:
            - daemon  # This one should exist, at least on ubuntu
            - a_non_existing_user
      
        tasks:
          - name: Check if users exist
            ansible.builtin.user:
              name: "{{ item }}"
            loop: "{{ users_to_test }}"
            check_mode: true
            register: test_users
      
          - name: Report
            ansible.builtin.debug:
              msg: "User {{ item.item }} {{ 'exists' if item.state | d('') == 'present' else 'does not exist' }}"
            loop: "{{ test_users.results }}"
            loop_control:
              label: "{{ item.item }}"
      

      在我的 ubuntu 20 本地机器上给出:

      $ ansible-playbook testuser.yml 
      
      PLAY [Check if users exists] ********************************************************************************************************************************************************
      
      TASK [Check if users exist] *********************************************************************************************************************************************************
      ok: [localhost] => (item=daemon)
      changed: [localhost] => (item=a_non_existing_user)
      
      TASK [Report] ***********************************************************************************************************************************************************************
      ok: [localhost] => (item=daemon) => {
          "msg": "User daemon exists"
      }
      ok: [localhost] => (item=a_non_existing_user) => {
          "msg": "User a_non_existing_user does not exist"
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-05
        • 2018-03-16
        相关资源
        最近更新 更多