Как преобразовать список повторяющихся циклов в строку для использования в Linux - PullRequest
0 голосов
/ 29 мая 2019

У меня есть роль 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 "}

1 Ответ

0 голосов
/ 03 июня 2019

Обход

Я нашел рабочее место для моей проблемы. Я бы осторожно назвал это решением. Для этого случая этого будет достаточно. Мне нужно "зациклить" мою переменную с помощью встроенного {{item}}. Затем {{item}} используется как строка, и я могу создать нужные мне PATH. Я также могу перебрать ряд элементов с помощью with_nested.

  - name: create empty file
    file:
      path: "{{ '/home/' + item + '/.ssh/authorized_keys' }}"
      state: touch
    with_items:
      - "{{ UserList }}"


  - name: Copy ssh public key to user/.ssh/_key_.pub
    copy:
      src: "{{ '/home/' + item[1] + '/.ssh/' + item[0] }}"
      dest: "{{ '/home/' + item[1] + '/.ssh/' + item[0] }}"
      mode: 600
      force: no
    with_nested:
      - [ 'id_rsa.pub' , 'id_dsa.pub' , 'id_ecdsa.pub' ]
      - "{{ UserList }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...