我有一个可见的剧本来创建新用户和创建每个用户的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和GIDshell> 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