Ansible 在任务中提示一个变量

sne*_*l s 6 ansible

我正在尝试在 sysctl.conf 文件的内联模块中添加一个值,我该如何实现?一旦我在提示中输入值,它应该在 sysctl.conf 文件中更新。

- name: shmmax
      prompt: " Please enter the value for kernel.shmmax "
      private: false


- name: Set some kernel parameters
      lineinfile:
        dest: /etc/sysctl.conf
        regexp: "{{ item.regexp }}"
        line: "{{ item.line }}"
      with_items:
        - { regexp: '^kernel.shmmax', line: 'kernel.shmmax = {{ shmmax }}' }


error is get is.

TASK [Set some kernel parameters] **********************************************************************************************************************************
fatal: [192.168.1.28]: FAILED! => {"msg": "'kernel' is undefined"}
        to retry, use: --limit `enter code here`
Run Code Online (Sandbox Code Playgroud)

谢谢

Vla*_*tka 7

暂停模块来提示在任务中输入。

例如

    - hosts: localhost
      tasks:
        - pause:
            prompt: "Please enter the value for kernel.shmmax "
            echo: yes
          register: result
        - set_fact:
            shmmax: "{{ result.user_input }}"
        - debug:
            var: shmmax
Run Code Online (Sandbox Code Playgroud)

给(略)

    TASK [pause] 
    [pause]
    Please enter the value for kernel.shmmax :
    [ok: [localhost]
    TASK [set_fact]
    ok: [localhost]
    TASK [debug] 
    ok: [localhost] => {
        "shmmax": "new_kernel.shmmax_value"
    }
Run Code Online (Sandbox Code Playgroud)

笔记

  1. 问题中的这部分代码无法工作,因为任务中没有模块
    - name: shmmax
          prompt: " Please enter the value for kernel.shmmax "
          private: false
Run Code Online (Sandbox Code Playgroud)

运行这样的代码会产生

    ERROR! Syntax Error while loading YAML.
      mapping values are not allowed in this context
Run Code Online (Sandbox Code Playgroud)
  1. 使用set_fact提示、注册和声明变量后,可以在任何任务中使用变量。