当前位置: 首页 > 知识库问答 >
问题:

Ansible:角色、结构和变量

苍意智
2023-03-14
├── hosts
├── playbooks
│   ├── project1-staging.yml
│   └── project1-production.yml
├── roles
│   └── project1-compile
│       ├── files
│       │   └── project1.conf
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       │   └── main.yml
│       ├── tasks
│       │   └── main.yml
│       ├── templates
│       └── vars
│           └── main.yml
│   └── ec2-create
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       │   └── main.yml
│       ├── tasks
│       │   └── main.yml
│       ├── templates
│       └── vars
│           └── main.yml
│   └── project1-deploy
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       │   └── main.yml
│       ├── tasks
│       │   └── main.yml
│       ├── templates
│       └── vars
│           └── main.yml
├── vars.yml
---
- name: deploy project1 (staging) {{ version }}
  hosts: local
  connection: local
  roles:
  #- project1-compile version={{ version }}
  - { role: ec2-create, project: project1,  count:1 }
  - { role: project1-compile, version: {{ version }}  }
  - { role: project1-deploy, version: {{ version }}, target: {{last_ec2}}  }

这个结构有一些问题,我也不喜欢它。-这样合适吗?-我如何使用EC2的结果-创建角色,我想部署代码到服务器,这是刚刚创建的,我不知道ID。-还有其他方法可以将参数传递给角色吗?

共有1个答案

能业
2023-03-14

看一下库存模块。更具体地说,add_host模块。

提要

使用变量在清单中创建新的主机和组,以便在同一剧本的后续剧本中使用。接受变量,以便更全面地定义新主机。

# add host to group 'just_created' with variable foo=42
- add_host: name={{ ip_from_ec2 }} groups=just_created foo=42

# add a host with a non-standard port local to your machines
- add_host: name={{ new_ip }}:{{ new_port }}

# add a host alias that we reach through a tunnel
- add_host: hostname={{ new_ip }}
            ansible_ssh_host={{ inventory_hostname }}
            ansible_ssh_port={{ new_port }}
 类似资料:
  • 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文件中定义的角色目录中安装角

  • 根据Ansible的文档,一个剧本是: ...一个非常简单的配置管理和多机部署系统的基础,不像任何已经存在的系统,并且非常适合部署复杂的应用程序。 同样,根据这些文档,一个角色是: 如果有人能给我解释这些差异,我对Ansible的理解将会大大提高! 剧本vs角色vs以及中的类似条目 如果剧本是在YAML文件中定义的,那么角色在哪里定义? 除了Ansible服务器上的之外,如何使用可用的剧本/角色添

  • 我有我的ansible playbook基本上创建一个新的虚拟机从模板在esxi什么,我必须转换到角色的playbook。我是ansible的新手,所以我不知道如何从roles(install)->vars目录调用硬编码变量。 这是我的剧本 问题是我不知道如何从roles->vars目录调用var,正如你可以在我的剧本中看到的,我有硬代码变量。我需要在文件中获取或设置变量,并从该文件调用它。

  • 本文向大家介绍ansible 角色依存关系,包括了ansible 角色依存关系的使用技巧和注意事项,需要的朋友参考一下 示例 角色还使您可以通过创建meta/main.yml带有dependencies块的文件来将其他角色定义为依赖项: 也可以将值传递给依赖角色中的参数/变量: 甚至有条件地执行依赖角色: 依赖角色始终在依赖它们的角色之前执行。而且,它们仅执行一次。如果两个角色声明与其依赖关系相同