我的目录结构如下
.
├── 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
在这种情况下,模板是否适用?
从其他问题中找不到太多信息:
default(omit)
时,它的作用并不如预期。它不会跳过那一行,而是将省略占位符字符串传递给导入的角色。为了解决这个问题,在包含角色之前,您可以使用set_facts
设置角色变量。 - Florin Hillebrandvars:
运算符。 - Gergely Lukacsy