Как включить словарь в поле данных k8s_raw - PullRequest
0 голосов
/ 22 мая 2019

Я пишу Ansible-playbook , чтобы вставить список секретных объектов в Kubernetes. Я использую синтаксис k8s_raw и хочу импортировать этот список из файла group_vars . Я не могу найти правильный синтаксис для импорта списка секретов в поле данных.

playbook.yml

- hosts: localhost
  tasks:
  - name: Create a Secret object
    k8s_raw:
      state: present
      definition:
        apiVersion: v1
        kind: Secret
        data:
          "{{ secrets }}"
          SKRT: "c2trcnIK"
        metadata:
          name: "test"
          namespace: "namespace-test"
        type: Opaqueroot
  vars_files:
    - "varfile.yml"

varfile.yml

secrets:
  TAMAGOTCHI_CODE: "MTIzNAo="
  FRIDGE_PIN: "MTIzNAo="

Ответы [ 3 ]

0 голосов
/ 22 мая 2019

Чтобы импортировать этот список из файла group_vars

Поместите localhost в группу. Например, группа тест

> cat hosts
test:
  hosts:
    localhost:

Поместите varfile.yml в каталог group_vars / test

$ tree group_vars
group_vars/
├── test
    └── varfile.yml

Затем запустите Playbook ниже

$ cat test.yml
- hosts: test
  tasks:
    - debug:
        var: secrets.TAMAGOTCHI_COD

$ ansible-playbook -i hosts test.yml

дает:

PLAY [test] ***********************************
TASK [debug] **********************************
ok: [localhost] => {
    "secrets.TAMAGOTCHI_CODE": "MTIzNAo="
}
PLAY RECAP *************************************
localhost: ok=1    changed=0    unreachable=0    failed=0
0 голосов
/ 22 мая 2019

Проблема была в поле SKRT: "c2trcnIK" чуть ниже строки "{{secrets}}" . Я удалил это, и теперь это работает! Спасибо всем.

0 голосов
/ 22 мая 2019

Во-первых, что это на самом деле говорит, когда вы пытаетесь выше?Это помогло бы получить результат ваших попыток.

Просто угадайте, но попробуйте переместить файлы var_files до того места, где вы пытаетесь использовать переменные.Кроме того, убедитесь, что ваши отступы в точности верны, когда вы делаете.

- hosts: localhost
  vars_files:
    - /varfile.yml

  tasks:
  - name: Create a Secret object
    k8s_raw:
      state: present
      definition:
        apiVersion: v1
        kind: Secret
        data:
          "{{ secrets }}"
        metadata:
          name: "test"
          namespace: "namespace-test"
        type: Opaqueroot

Ссылка

примечание: я бы немедленно отладил это, не пытаясь выполнить задачу.Удалите свою основную задачу и после попытки использовать vars_files попытайтесь напрямую распечатать секреты, используя игру debug.Это позволит вам точно настроить синтаксис и продолжать играть с ним до тех пор, пока вы не сделаете это правильно, без необходимости запускать и ждать более сложной игры, которая последует. Ссылка .

...