将变量从项目传递到 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 }}
如果您决定更改路径,这将很有用。如果您对此有任何疑问,请随时在评论中提问
这是我的设置。我创建了一个 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 }}
如果您决定更改路径,这将很有用。如果您对此有任何疑问,请随时在评论中提问