2016-03-14 9 views
0

Я хочу получить список установленных служб и их версии на экземплярах debian ec2.Ansible для получения списка программ для aws

Я не могу понять, как я могу получить список пакетов, которые показывает dpkg -list, потому что я хочу получить этот список через доступную на моей маленькой ферме серверов.

ответ

0

Проще было бы просто запустить задачу оболочки:

- shell: dpkg --list 
    register: packages 

Теперь у вас есть результат, хранящийся в packages.stdout_lines.

Если вы хотите только имена пакетов, запустить что-то вроде этого

dpkg --get-selections | grep -v "deinstall" | cut -f1 

Для выполнения задачи на узле управления анзибль вам необходимо делегировать задачу:

- shell: dpkg --list 
    register: packages 
    delegate_to: localhost 

Сейчас команда находится выполненный на контрольном хосте (localhost), и результат, сохраненный в packages.stdout_lines

+0

Большое спасибо за ответ. Это дало мне хороший прогресс в изучении Ansible. Однако я не могу найти файл packages.stdout_lines в любом месте. Я добавил shell: dpkg --list >> somelog.txt в playbook, но он создал выходной файл на удаленном хосте вместо незаменимого сервера. В основном я хочу получить список пакетов всех экземпляров на сервере Ansible –

+0

В моей выше задаче результат регистрируется как переменная 'packages'. Команда stdout исполняемой оболочки хранится в свойстве 'stdout_lines'. Поэтому вы можете получить доступ к стандарту stdout как 'packages.stdout_lines'. Это не файл, а varaible. – udondan

+0

Попробуйте выполнить такую ​​задачу: '- debug: msg =" {{packages.stdout_lines}} "' – udondan

0
--- 
- hosts: hostblockname 
    tasks: 
    - name: Get Packages List 
    shell: dpkg --list > packageslist 
    register: packages 
    - fetch: src=/root/packageslist dest=/root/packagesdirectory/ 

Я добавил вышепользованую книгу, которая помогла мне выполнить мою задачу. Там может быть место для оптимизации, но почему-то я могу сделать это для меня.

Я хотел получить список всех пакетов, установленных в надлежащем формате на всех облачных экземплярах. Затем я хотел получить список всех пакетов в файле на моем сервере Ansible. В этой пьесе впервые создан список установленных пакетов на удаленных экземплярах, после чего они были возвращены на главный Ansible хост.

Команда для запуска пьес был: анзибль-Playbook -i hostslistfile myplaybook.yml

myplaybook.yml, как указано выше.

hostslistfile простой файл, который, как показано ниже: [hostblockname] 192.168.0.144:22

Смежные вопросы