1

我在独立的剧本中使用了一段时间的 ansible,现在想在我的环境中配置角色结构。这是文件夹结构(例如,总结)

├── 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

它看起来很简单。我想执行 project1-staging.yml 剧本来为特定版本创建一个新的暂存环境,就像这样;ansible-playbook project1-staging.yml -e 'version=1'

和下面的剧本;

---
- 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-create 角色的结果,我想将代码部署到刚刚创建但我不知道 id 的服务器。- 是否有另一种将参数传递给角色的方法?

4

1 回答 1

0

看看库存模块。更具体地说是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 }}
于 2014-06-26T05:14:43.913 回答