Назад | Перейти на главную страницу

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`

Спасибо

Здесь Пауза модуль для запроса ввода внутри задачи.

Например

    - 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

дает (сокращенно)

    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"
    }

Ноты

  1. Эта часть кода из вопроса не может работать, потому что в задаче нет модуля
    - name: shmmax
          prompt: " Please enter the value for kernel.shmmax "
          private: false

Запуск такого кода приведет к

    ERROR! Syntax Error while loading YAML.
      mapping values are not allowed in this context
  1. Переменную можно использовать в любой задаче после того, как она была запрошена, зарегистрирована и объявлена ​​с помощью set_fact.