我有我的ansible playbook基本上创建一个新的虚拟机从模板在esxi什么,我必须转换到角色的playbook。我是ansible的新手,所以我不知道如何从roles(install)->vars目录调用硬编码变量。
这是我的剧本
---
# create a new VM from a template
- name: VM from template
hosts: localhost
gather_facts: false
connection: local
vars:
vcenter_hostname: vcenter-app
vcenter_user: john@doe
vcenter_pass: blabla6
esxhost: esx-4.cbalo.fr
datastore: VM-PROD-02-NORMAL
vmtemplate: Centos7-template
name: "newvm2"
notes: Ansible Test
dumpfacts: False
tasks:
- name: Create VM from template
vmware_guest:
validate_certs: False
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
esxi_hostname: "{{ esxhost }}"
datacenter: CD06
folder: Test
name: "{{ name }}"
template: "{{ vmtemplate }}"
hardware:
memory_mb: "{{ vm_memory | default(1024) }}"
wait_for_ip_address: True
state: present
register: newvm2
---
- name: Create VM from template
vmware_guest:
validate_certs: False
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
esxi_hostname: "{{ esxhost }}"
datacenter: CD06
folder: Test
name: "{{ name }}"
template: "{{ vmtemplate }}"
hardware:
memory_mb: "{{ vm_memory | default(1024) }}"
wait_for_ip_address: True
state: present
register: newvm2
---
# create a new VM from a template
- name: VM from template
hosts: localhost
gather_facts: false
connection: local
roles:
- install
问题是我不知道如何从roles->vars目录调用var,正如你可以在我的剧本中看到的,我有硬代码变量。我需要在文件中获取或设置变量,并从该文件调用它。
**vcenter_hostname: vcenter-app
vcenter_user: john@doe
vcenter_pass: blabla6
esxhost: esx-4.cbalo.fr
datastore: VM-PROD-02-NORMAL
vmtemplate: Centos7-template
name: "newvm2"
datacenter: CD06
folder: Test**
ansible中的变量是一组将替换某些位置持有者的值。您在运行playbook时提供它们,如果您包括角色等,它们将“涓滴而下”。请查看文档以了解Ansible中的变量优先级。
因此,您要做的是将变量赋值放在清单中(也可以使用group_vars
)将变量拆分到单独的文件中),然后在ansible-playbook
命令中使用-i path/to/inventory.yml
。
结构可以如下所示:
my-ansible/
roles/
my-role/
tasks/
main.yaml
defaults/
main.yaml # contains default values for your variables
inventory/
inventory.yaml # contains hosts and variable assignments
run.yaml
ansible-playbook -i inventory/inventory.yaml run.yaml
my-role/vars
,因为很难在其中重写变量赋值。(请参见变量优先级)defaults/main.yaml
不是必需的,但对于很少更改的变量却很方便我认为构建一个包含本地服务器、目录文件和host_Vars文件夹的ansible角色会很好。因此,通过在ansible从工作目录上安装该角色,并将清单名称作为参数传递,我可以在ansible文件夹中复制与该名称相关的文件,并在下一步中将其用作清单文件和变量,以便部署到远程服务器上。 首先,有没有人有更好的主意来制作一个动态的库存文件?使用本地git服务器和存储库还是shell命令? 主要问题:如何
下面是名为webserver的ansibel角色的目录结构 本地主机角色#树
这个结构有一些问题,我也不喜欢它。-这样合适吗?-我如何使用EC2的结果-创建角色,我想部署代码到服务器,这是刚刚创建的,我不知道ID。-还有其他方法可以将参数传递给角色吗?
myrole/tasks/main.yml myrole/defaults/main.yml 但是,当我将变量传递给我的角色时,它无法使用defaults/main.yml文件,并且得到以下错误: 似乎可以使用数组,但如果我使用哈希并希望访问带有item.xxx的变量,则返回此错误: 失败了!=>{“failed”:true,“msg”:“字段'args'具有无效值,该值似乎包含未定义的变量。错误
本文向大家介绍ansible 使用角色,包括了ansible 使用角色的使用技巧和注意事项,需要的朋友参考一下 示例 Ansible使用角色的概念来更好地允许模块化代码并避免重复自己。 角色只是Ansible知道从何处加载vars文件,任务和处理程序的文件夹结构。一个例子可能看起来像这样: 然后,您可以将该角色用于基本的剧本,如下所示: 针对此剧本运行Ansible时,它将针对组中的所有主机并针对
本文向大家介绍ansible 与Ansible Galaxy共享角色,包括了ansible 与Ansible Galaxy共享角色的使用技巧和注意事项,需要的朋友参考一下 示例 还可以轻松地与社区共享角色,或通过Ansible Galaxy下载由社区其他成员创建的角色。 Ansible附带了一个名为的命令行工具ansible-galaxy,可用于在ansible.cfg文件中定义的角色目录中安装角