-1

在我的ansible剧本中,我从用户那里获取了2个输入,我还想获取第三个输入,这有时应该是可选的,如果用户提供了 var3 的值,那么剧本必须执行一个任务,否则它不应该执行,那么方法是什么为达到这个?

另外我想知道我正在使用 awx 开源 UI 进行 ansible,所以我选择主机在 ansible awx 清单中运行剧本,之后我应该在我的剧本的“主机”中写什么,或者它可以单独放置。

 - name: Updating "{{ service_name  }}" server codebase and starting its service.
   hosts: all
   tasks:
    - name: Stopping nginx service
      command: sudo service nginx stop


    - name: Performing git checkout in the specified directory "{{ path  }}"
      command: git checkout .
      args:
        chdir: "{{ path }}"

    - name: Running npm install in the directory "{{ path }}"
      command: npm install
      args:
        chdir: "{{ path }}/node_modules"


    - name: Restarting the "{{ service_name }}" service
      command: sudo service "{{ service_name }}" restart

    - name: Restarting the nginx service
      command: sudo service nginx restart
4

1 回答 1

0

在这种情况下,用户是谁?你?如果您是用户,那么您可以运行

ansible-playbook -i hosts <your-playbook> -e "service_name=<yourservice>"

在剧本执行时动态更改 service_name 变量。

然后,您也可以将第二个变量添加到命令中,但请注意“可选”第三个变量,因为我确定如果您没有引用剧本中的所有变量,您将收到错误消息。

编辑:执行 ansible-playbook 命令时,您需要同时引用 service_name 和路径变量,第三个变量在哪里,因为它似乎不在您提供的代码示例中?

于 2019-12-19T12:41:10.283 回答