openstack-ansible中变量和角色的使用
Usage of variable and role in openstack-ansible
我是Ansible新手,最近开始研究用Ansible部署Openstack
这里是openstack-ansible的git:
https://github.com/openstack/openstack-ansible
来自教程:
https://docs.openstack.org/project-deploy-guide/openstack-ansible/newton/run-playbooks.html
只有一个命令运行剧本:
openstack-ansible setup-hosts.yml
我读了这个剧本,它在第 16 行包括另一个剧本:
include: openstack-hosts-setup.yml
然后我阅读了包含的 openstack-hosts-setup.yml,下面是其中的片段:
- name: Basic host setup
hosts: "{{ openstack_host_group|default('hosts') }}"
gather_facts: "{{ gather_facts | default(True) }}"
max_fail_percentage: 20
user: root
pre_tasks:
- name: Check for a supported Operating System
assert:
that:
- (ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'xenial') or
(ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7')
msg: "The only supported platforms for this release are Ubuntu 16.04 LTS (Xenial) and CentOS 7 (WIP)"
roles:
- role: "openstack_hosts"
tags:
- openstack-hosts
我对这里的角色感到困惑
roles:
- role: "openstack_hosts"
据我所知,使用角色时应该有目录结构:
roles/
openstack_hosts/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
但是,我在这个openstack-ansible项目中找不到这个结构。
所以我不知道这个剧本中的角色(openstack_hosts)在哪里。
当运行这个剧本时,发生了一个错误,正如预期的那样:
错误!在 /opt/openstack-ansible/playbooks/roles:/root/ansible/roles:/opt/openstack-ansible/playbooks
中找不到角色 'openstack_hosts'
另外,我想知道变量是从哪里来的:
hosts: "{{ openstack_host_group|default('hosts') }}"
我以为可以从目录 vars 或 defaults
在角色目录下。
由于没有这样的目录,我不知道这个变量是从哪里来的。
谁能告诉我应该在哪里找到变量 openstack_host_group
并解释这里的角色是如何使用的?
或者我错过了什么或者我对 Ansible 的一些概念有误?
谢谢!!
对了,这是我第一次提问。
如果问题不够清楚或不合适,请告诉我:)。再次感谢。
我猜你没有完成 this guide 的 bootstrap-ansible.sh
。所以您没有安装必需的角色。
至于openstack_host_group
,它似乎是可选变量,所以如果你想要额外的变量(比如-e openstack_host_group=my_other_group
),你可以覆盖默认主机模式(即hosts
) ).
我是Ansible新手,最近开始研究用Ansible部署Openstack
这里是openstack-ansible的git:
https://github.com/openstack/openstack-ansible
来自教程:
https://docs.openstack.org/project-deploy-guide/openstack-ansible/newton/run-playbooks.html
只有一个命令运行剧本:
openstack-ansible setup-hosts.yml
我读了这个剧本,它在第 16 行包括另一个剧本:
include: openstack-hosts-setup.yml
然后我阅读了包含的 openstack-hosts-setup.yml,下面是其中的片段:
- name: Basic host setup
hosts: "{{ openstack_host_group|default('hosts') }}"
gather_facts: "{{ gather_facts | default(True) }}"
max_fail_percentage: 20
user: root
pre_tasks:
- name: Check for a supported Operating System
assert:
that:
- (ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'xenial') or
(ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7')
msg: "The only supported platforms for this release are Ubuntu 16.04 LTS (Xenial) and CentOS 7 (WIP)"
roles:
- role: "openstack_hosts"
tags:
- openstack-hosts
我对这里的角色感到困惑
roles:
- role: "openstack_hosts"
据我所知,使用角色时应该有目录结构:
roles/
openstack_hosts/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
但是,我在这个openstack-ansible项目中找不到这个结构。 所以我不知道这个剧本中的角色(openstack_hosts)在哪里。
当运行这个剧本时,发生了一个错误,正如预期的那样:
错误!在 /opt/openstack-ansible/playbooks/roles:/root/ansible/roles:/opt/openstack-ansible/playbooks
中找不到角色 'openstack_hosts'另外,我想知道变量是从哪里来的:
hosts: "{{ openstack_host_group|default('hosts') }}"
我以为可以从目录 vars 或 defaults 在角色目录下。 由于没有这样的目录,我不知道这个变量是从哪里来的。
谁能告诉我应该在哪里找到变量 openstack_host_group 并解释这里的角色是如何使用的? 或者我错过了什么或者我对 Ansible 的一些概念有误?
谢谢!!
对了,这是我第一次提问。 如果问题不够清楚或不合适,请告诉我:)。再次感谢。
我猜你没有完成 this guide 的 bootstrap-ansible.sh
。所以您没有安装必需的角色。
至于openstack_host_group
,它似乎是可选变量,所以如果你想要额外的变量(比如-e openstack_host_group=my_other_group
),你可以覆盖默认主机模式(即hosts
) ).