gpt4 book ai didi

ansible - 将变量传递给 ansible 角色

转载 作者:行者123 更新时间:2023-12-03 03:22:44 24 4
gpt4 key购买 nike

我的目录结构是这样的

.
├── README.md
├── play.yml
└── roles
├── bootstrap_server
│   └── tasks
│   └── main.yml
├── create_new_user
│   └── tasks
│   └── main.yml
├── update
│   └── tasks
│   └── main.yml
└── vimserver
├── files
│   └── vimrc_server
└── tasks
└── main.yml

当我在 create_new_user 角色下创建用户时,我将用户名硬编码为

---
- name: Creating a user named username on the specified web server.
user:
name: username
state: present
shell: /bin/bash
groups: admin
generate_ssh_key: yes
ssh_key_bits: 2048
ssh_key_file: .ssh/id_rsa

- name: Copy .ssh/id_rsa from host box to the remote box for user username
become: true
copy:
src: ~/.ssh/id_rsa.pub
dest: /home/usernmame/.ssh/authorized_keys
mode: 0600
owner: username
group: username

解决此问题的一种方法可能是创建一个 var/main.yml 并将用户名放在那里。但我想要一些可以在 play.yml 级别指定用户名的东西。因为我还在角色 vimrcserver 中使用用户名。

我使用 play.yml 调用角色

---
- hosts: testdroplets
roles:
- update
- bootstrap_server
- create_new_user
- vimserver

在这种情况下,模板可以工作吗?
从其他问题中找不到太多内容:

最佳答案

我通过使用这个剧本让它工作:

---
- hosts: testdroplets
roles:
- update
- bootstrap_server
- role: create_new_user
username: username
- role: vimserver
username: username

文档:http://docs.ansible.com/ansible/playbooks_roles.html#roles

<小时/>

这是另一个选项,其目录结构如下

.
├── README.md
├── ansible.cfg
├── play.yml
└── roles
├── bootstrap_server
│   └── tasks
│   └── main.yml
├── create_new_user
│   ├── defaults
│   │   └── main.yml
│   └── tasks
│   └── main.yml
├── update
│   └── tasks
│   └── main.yml
└── vimserver
├── defaults
│   └── main.yml
├── files
│   └── vimrc_server
└── tasks
└── main.yml

我在需要使用 {{username}} 的角色内创建 defaults/main.yml 文件的位置

如果有人对代码感兴趣:https://github.com/tasdikrahman/ansible-bootstrap-server

关于ansible - 将变量传递给 ansible 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com