将变量从项目传递到剧本ansible

时间:2018-05-20 11:20:49

标签: ansible ansible-tower

这是我的设置。我创建了一个scm类型的git项目,并在那里有我的代码。我的剧本也在该存储库中,它包含docker build和run命令。为了构建我的docker,我应该执行我的docker文件所在的构建命令(在这种情况下,ansible项目克隆/ var / lib / awx / project)。我希望通过我的ansible剧本。

我的剧本看起来像这样:

---
- hosts: all
  sudo: yes
  remote_user: ubuntu
  gather_facts: no

  tasks:
    - name : build docker
      become: yes
      become_user: root
      command : docker build -t "test-api" .
    - name: run docker
      become: yes
      become_user: root
      command : docker run -it -p 80:9001 --name api test-api

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用vars来定义变量:

---
- hosts: all
  sudo: yes
  remote_user: ubuntu
  gather_facts: no
  vars:
    file_path: "<your file path>" 

  tasks:
    - name : build docker
      become: yes
      become_user: root
      command : docker build -t "test-api" .
    - name: run docker
      become: yes
      become_user: root
      command : docker run -it -p 80:9001 --name api test-api

并在您的命令中访问该变量,如“{{file_path}}”

答案 1 :(得分:0)

执行ansible-playbook命令时,可以将变量发送到playbook。这就是你能做的:

 ansible-playbook my-playbook.yml -e"path='/var/lib/awx/project'"

然后只需在剧本中使用它作为正常变量:{{ path }}

如果您决定更改路径,这将非常有用。如果您对此有任何疑问,请随时在评论中提问