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

Pass variables from project to playbooks ansible

这是我的设置。我创建了一个 scm 类型的 git 项目,并在那里放置了我的代码。我的剧本也在该存储库中,它包含 docker 构建和 运行 命令。为了构建我的 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

我怎样才能做到这一点?

您可以使用 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 }}”

您可以在执行ansible-playbook命令时将变量发送到剧本。这是你可以做的:

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

然后在剧本中将其用作普通变量即可:{{ path }}

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