openstack ansible中变量和角色的使用

openstack ansible中变量和角色的使用,ansible,openstack,Ansible,Openstack,我是Ansible的新手,最近我开始研究用Ansible部署Openstack 以下是openstack ansible的git: 在本教程中: 有一个命令运行playbook: openstack-ansible setup-hosts.yml 我读过这本剧本,它包括第16行的另一本剧本: include: openstack-hosts-setup.yml 然后我阅读了附带的openstack hosts setup.yml,下面是其中的一段代码: - name: Basic hos

我是Ansible的新手,最近我开始研究用Ansible部署Openstack

以下是openstack ansible的git:

在本教程中:

有一个命令运行playbook:

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_主机)在哪里

运行此playbook时,意外发生错误:

错误!在/opt/openstack ansible/playbooks/roles:/root/ansible/roles:/opt/openstack ansible/playbooks中找不到角色“openstack\u hosts”

另外,我想知道变量的来源:

hosts: "{{ openstack_host_group|default('hosts') }}"
我认为变量将从目录varsdefaults中找到 在角色目录下。 由于没有这样的目录,我不知道这个变量来自哪里

请告诉我在哪里可以找到变量openstack\u host\u group 并解释如何在这里使用该角色? 或者我错过了什么,或者我对Ansible的一些概念有误

谢谢

顺便说一下,这是我第一次问这个问题。
如果问题不够清楚或不恰当,请告诉我:)。再次感谢。

我猜您没有从中完成引导ansible.sh。因此,您没有安装所需的角色


至于
openstack\u host\u group
,它似乎是可选的变量,因此如果您需要额外的变量(如
-e openstack\u host\u group=my\u other\u group
),您可以覆盖默认的主机模式(即
hosts
)。

谢谢!我找到了原因。由于某些原因,
ansible.sh
引导程序终止,并且没有执行
ansible galaxy
。我手动执行了
ansible galaxy安装--role file=ansible-role-requirements.yml--force
,并且成功安装了所需的角色。因为我不熟悉ansible galaxy,为了弄清楚它是如何工作的,我访问了
https://git.openstack.org/openstack/openstack-ansible-openstack_hosts
它来自浏览器的配置文件ansible-role-requirements.yml,只是想知道git repo中的内容。然而,我得到了404错误。如果URL不可用,您能告诉我如何成功安装角色吗?很抱歉,有这么多问题。非常感谢您的帮助~非常感谢。Git客户端的工作原理与您的浏览器不同,您可以使用
curl-a“Git/2.0.0”测试Git urlhttps://git.openstack.org/openstack/openstack-ansible-openstack_hosts/info/refs
或通过浏览器中的访问。