У меня есть роль Ansible, которую я хочу перебрать.
Цель - создать новые учетные записи пользователей из списка.Playbook вызывает роль и отправляет список для повторения.
ОС (Linux Debian 8.8) видит все из var unicode "[u'user ']"
Некоторые другие выполненные тесты показывают новых пользователей: [' test '] [u'test']
Все, что я действительно хочу, это чтобы переменная была строкой, поэтому я создаю нового пользователя и добавляю необходимые ключи и другие файлы.Я также могу присоединить var к путям для ключей и других файлов.
Я искал простой способ "| to_string", (не в Ansible)
Фильтр "to_yaml" избавляется отUnicode, но не «[]» и добавляет «\ n» в конце.
Элемент для копирования ключа ssh, если для различных файлов id_ (type) .pub.
У меня естьчитайте:
Преобразование переменной Ansible из Unicode в ASCII
Код
Playbook:
vars_files:
- /home/admin/common/vars/UserList
gather_facts: False
roles:
- { role: common, "{{ UserList }}" }
UserList file
---
UserList:
- 'test'
...
role/common/main.yml
---
- name: Add user to server
user:
name: "{{ UserList }}"
shell: /bin/bash
- name: make direcotry
file:
path: "/home/{{ UserList }}/.ssh"
state: directory
- name: Copy ssh public key to user/.ssh/_key_.pub
copy:
src: "/home/{{ UserList }}/.ssh/{{ item }}"
dest: "/home/{{ UserList }}/.ssh/{{ item }}"
mode: 600
force: no
with_items:
- id_rsa.pub
- id_dsa.pub
- id_ecdsa.pub
...
Другая форма, но все еще с ошибкойкак показано ниже.
roles:
- role: common
with_items:
- "{{ UserList }}"
Ошибка
(item = id_rsa.pub) => {"failed": true, "invocation": {"module_args": {"dest": "/home/[u'test']/.ssh/id_rsa.pub "," force ": false," mode ": 600," src ":" /home/[u'test']/.ssh/id_rsa.pub "}," module_name ":" copy "}," item ":" id_rsa.pub "," msg ":" не удалось найти src = / home / [u'test '] /. ssh / id_rsa.pub "}