首页 文章

在openstack-ansible中使用变量和角色

提问于
浏览
0

我是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

有一个命令正在运行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_hosts)在哪里 .

运行此playbook时,发生了预期的错误:

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

另外,我想知道变量来自哪里:

hosts: "{{ openstack_host_group|default('hosts') }}"

我以为变量将在角色目录下的目录 varsdefaults 中找到 . 由于没有这样的目录,我不知道这个变量来自哪里 .

可以告诉我在哪里可以找到变量 openstack_host_group 并解释如何在这里使用该角色?或者我是否错过了一些关于Ansible的概念?

谢谢!!

顺便说一句,这是我第一次提问 . 如果问题不够清楚或不合适,请告诉我:) . 再次感谢 .

1 回答

  • 0

    我猜你没有从this guide完成 bootstrap-ansible.sh . 因此,您没有安装必需的角色 .

    至于 openstack_host_group ,它似乎是可选变量,因此如果你想要额外的变量(如 -e openstack_host_group=my_other_group ),你可以覆盖默认主机模式(这是 hosts ) .

相关问题