我正在尝试在 Ansible 中进行多个 playbook 调用,但我似乎无法使其与 import_playbook、include_task 或 include 一起使用(我相信 include 已被弃用)。
这就是我正在尝试做的事情:
我有一个 Python 文件,提示用户在两个 YAML 文件之间进行选择,然后调用 scene1.yml,该文件根据用户的选择重定向到 local_deployment.yml 或 aws_deployment.yml。
这是scenario1.yml内容:
- hosts: localhost
tasks:
- name: "Deployment in local mode"
include_task: local_deployement.yml
when: mode == "local"
- hosts: all
tasks:
- name: "Deployment in non-local mode"
import_playbook: aws_deployement.yml
when: mode == "nonlocal"
接下来,local_deployment.yml 负责调用每个本地 Ansible 脚本:
# local_deployement.yml
- hosts: localhost
tasks:
- name: "Inclusion of tasks for local mode deployment"
include_tasks: local_bdd_server.yml
when: mode == "local"
- include_tasks: local_ftp_server.yml
when: mode == "local"
最后,local_bdd_server.yml 的示例如下:`
# local_bdd_server.yml
- hosts: localhost
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- name: Install Docker and Docker-compose
become: yes
apt:
update_cache: yes
name: "{{ item }}"
state: present
with_items:
- apt-transport-https
- ca-certificates
- curl
- lsb-release
- gnupg2
- python3-pip
不幸的是,由于参数的原因,它在 playbook 调用期间卡住了,但我不明白为什么。
我正在寻找 include_task 和 import_tasks 之间的区别。我认为 include_task 应该用于任务列表,所以也许这就是问题所在,因为我的数据库部署不是任务列表,而是常规剧本。但是,我不确定应该如何修改它。
就个人而言,一切似乎都很顺利。只有当所有东西结合在一起时它才会停止工作。
因此,如果您有任何想法,那将非常有帮助,谢谢!
好的,您有多个设计问题,最好先解决这些问题,然后再继续:
import_playbook
不能作为任务使用,并且 在文档中特别提到
我有一个 Python 文件,提示用户在两个 YAML 文件之间进行选择,然后调用 scene1.yml,该文件根据用户的选择重定向到 local_deployment.yml 或 aws_deployment.yml。
--limit
CLI 参数:
# inventory
---
all:
hosts:
aws:
ansible_host: 'your_aws_api_url_goes_here'
# deployment.yaml
---
- name: Deploy something
hosts: all
connection: local
tasks:
- name: Use AWS modules with ansible_host
# ...
这样,剧本将默认在您的 AWS 环境中运行。如果有人想在本地运行相同的内容,他们所需要做的就是使用
--limit localhost
参数运行此剧本。
apt
而不是在循环中调用它,
name
模块的工作速度会更快,这也在文档中提到过:
# local_bdd_server.yml
- hosts: localhost
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- name: Install Docker and Docker-compose
become: yes
apt:
update_cache: yes
name:
- apt-transport-https
- ca-certificates
- curl
- lsb-release
- gnupg2
- python3-pip
state: present