L oop поверх файлов debian в каталоге и последовательной установки, используя ansible - PullRequest
0 голосов
/ 05 марта 2020

У меня около 250 файлов Debian в каталоге / home / emgda / del /, которые периодически меняются и должны устанавливаться каждый день.

Поэтому я пытаюсь написать скрипт Ansible для l oop этот каталог, удерживайте имена файлов в массиве, затем устанавливайте все Debian последовательно, используя команду sudo dpkg -i file_name

Итак, ниже приведен код, который я перечислил файлы в каталоге, просто нужно добавить command: чтобы выполнить указанную выше команду,

---
- hosts: local
  gather_facts: false

  tasks:

  - command: "ls /home/emgda/del/"
    register: dir_out

  - debug: var={{item}}
    with_items: dir_out.stdout_lines

ВЫВОД

PLAY [local] ***********************************************************************************************************

TASK [command] ************************************************************************************************************************
changed: [localhost]

TASK [debug] ************************************************************************************************************************
ok: [localhost] => (item=dir_out.stdout_lines) => {
    "dir_out.stdout_lines": [
        "a.deb"
    ],
    "item": "dir_out.stdout_lines"
}

PLAY RECAP ************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0

Любая помощь будет высоко оценена.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Ну, я решил это, используя методику ниже.

---
- hosts: local
  gather_facts: false

  tasks:

  - name: Making a list of files
    shell: "ls /home/emgda/packages/"
    register: command_result

  - name: Installing Debian sequentially.
    become: yes
    shell: "dpkg -i /home/emgda/packages/{{item}}"
    with_items: 
     - "{{ command_result.stdout_lines }}"
0 голосов
/ 05 марта 2020

Q: "У меня есть файлы Debian в каталоге / home / emgda / del /, который периодически изменяется и должен быть установлен."

A: найти пакетов и установить их в l oop с apt

    - find:
        path: '/home/emgda/del/'
        patterns: '*.deb'
      register: result

    - apt:
        deb: '{{ item.path }}'
      loop: '{{ result.files }}'

Можно запрос плагин fileglob и установить пакеты в одну задачу

    - apt:
        deb: "{{ item }}"
      loop: "{{ query('fileglob', '/home/emgda/del/*.deb') }}"
...