The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Как в Ansible в цикле with_items получить значение item?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Система. проблемы, диагностика / Linux)
Изначальное сообщение [ Отслеживать ]

"Как в Ansible в цикле with_items получить значение item?"  +/
Сообщение от xintrea (??), 23-Апр-20, 13:23 
Имеется такой список:

# Таблица репозитариев
gitRepos:
- [ "idk.git",           "master",    "idk",            "idk.pro", "" ]
- [ "touch_widgets.git", "master",    "tw_integration", "tw.pro",  "" ]
- [ "akson.git",         "radioline", "akson",          "",        "/usr/share/akson" ]

Я делаю по ней всякие циклы with_items. В этих циклах я могу получать значения столбцов по числовому индексу, например {{ item[2] }}, вот так:

  - name: Получение последних изменений из GIT
    shell: "cd {{ gitReposPath }}/{{ item[2] }} ; git pull"
    with_items:
    - "{{ gitRepos }}"

Но писать магические константы индексов некомильфо. Поэтому я сделал переменные:

# Структура таблицы репозитариев
gitTable_RepoNetworkPath: 0         # Сетевой путь к Git-репозитарию
gitTable_BranchName: 1              # Имя ветки
gitTable_DirectoryName: 2           # Имя каталога
gitTable_ProFileName: 3             # Имя файла проекта
gitTable_TargetCopyDirectoryName: 4 # Директория для прямого копирования

И хочу вместо индексов писать осмысленные имена переменных. То есть, вместо

{{ item[2] }}

я пытаюсь написать:

{{ item[ {{ gitTable_DirectoryName }} ] }}

Но Ansible меня не понимает, и дает ошибку:

fatal: [compilingHost]: FAILED! => {"msg": "template error while templating string: expected token ':', got '}'. String: cd {{ gitReposPath }}/{{ item[ {{ gitTable_DirectoryName }} ] }} ; git pull"}


Вопрос: Как получить значение переменной цикла item, когда она является списком, причем индекс задать не магическим числом, а переменной?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от xintrea (??), 23-Апр-20, 13:42   +/
В общем, надо писать так:

{{ item[ gitTable_DirectoryName ] }}

Вопрос закрыт.

Ответить | Правка | Наверх | Cообщить модератору

2. Сообщение от Аноним (2), 27-Апр-20, 15:24   +/
> Имеется такой список:

я, конечно, только учусь, но что мешает сделать так:

 
# Таблица репозитариев
gitRepos:
  - RepoNetworkPath: "idk.git"          
    BranchName: "master"
    DirectoryName: "idk"
    ProFileName: "idk.pro"
    TargetCopyDirectoryName: ""
  - RepoNetworkPath: ...

и писать

{{ item.DirectoryName  }}

?
Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от Аноним (2), 27-Апр-20, 15:38   +/
ну и раз уж я все равно влез, то чем shell в вашем случае лучше чем https://docs.ansible.com/ansible/latest/modules/git_module.html ?
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру