Ansible Loop Register



我有一个可见的剧本来创建新用户和创建每个用户的docker。用户的信息是从一个有200多条记录的yaml文件中收集的。yaml文件由用户名和密码组成。要创建docker容器,我必须给用户的PUID和PGID到docker运行命令。下面是命令

的示例
docker run --restart=always -it --init -td -p {port from ansible}:8443 -e PUID={PUID from ansible} -e PGID={PGID from Ansible} linuxserver/code-server:latest

我想获得用户的PUID和PGID,并将其注册到一个变量,以使用它们来创建docker容器。我尝试使用以下命令,但由于它将输出附加到变量字典中,因此无法将用户名与PUID/PGID匹配。

- name: GET PUID
shell: id -u "{{ item.username }}"
loop: "{{ user }}"
register: puid
- name: pgid Variable
debug: msg="{{ pgid.stdout }}"

YAML for user

user:
- username: john.doe
password: password

我想使用的docker镜像:https://hub.docker.com/r/linuxserver/code-server

例如,在test_11

处获取用户admin的UID和GID
shell> ssh admin@test_11 id admin
uid=1001(admin) gid=1001(admin) groups=1001(admin)

使用模块getent。下面的剧本

- hosts: test_11
tasks:
- getent:
database: passwd
- set_fact:
admin_uid: "{{ ansible_facts.getent_passwd.admin.1 }}"
admin_gid: "{{ ansible_facts.getent_passwd.admin.2 }}"
- debug:
msg: |
admin_uid: {{ admin_uid }}
admin_gid: {{ admin_gid }}

给(简略)

TASK [debug] ********************************************************
ok: [test_11] => 
msg: |-
admin_uid: 1001
admin_gid: 1001

最新更新