Name
Last commit
Last update
..
MINIMAL file_fetch init
README.md 2021-03-09, update2

logo

Ansible의 shell 모듈을 이용한 OS 패키지 리스트정보 수집

OS 별 Package 관리명령을 통한 전체 패키지 리스트 수집을 자동화 한다.

주요 기능

  • 수행 후 APT_PACKAGES/IP주소/일자/pkg_result.txt 파일을 남기도록 한다.

Inventory 설정

# cat hosts
[ALL_HOSTS]
172.16.0.100 managed_ip=172.16.0.100 des="2020-12-03"

[ALL_HOSTS_OK]

대상 호스트는 172.16.0.100이며, 추가는 2020-12-03에 수행한다. 참고적으로 ALL_HOSTS_OK 호스트 그룹은 작업이 완료된 호스트의 history를 위한 그룹이다.

Host Variables 설정

# cat host_vars/172.16.0.100
ansible_ssh_host: 172.16.0.100
ansible_ssh_port: SSH_포트번호
ansible_ssh_user: 사용자 아이디
ansible_ssh_pass: "사용자 패스워드"
ansible_become: yes
ansible_become_method: su
ansible_become_user: root
ansible_become_pass: "!root_패스워드"
ansible_python_interpreter: python2.7

Playbook 설정

---
- name: OS PACKAGE_QUERY Action
  hosts: ALL_HOSTS
  vars:
    time: "{{lookup('pipe','date \"+%Y-%m-%d\"')}}"
  tasks:
    - name: Local Directory Create
      local_action: command mkdir -p PACKAGES/{{ managed_ip }}/{{ time }}

    - name: Get packages
      shell: dpkg-query -f '${binary:Package}\n' -W
      register: packages
      when: ansible_os_family == "Debian"

    - name: Get packages
      shell: rpm -qa
      register: packages
      when: ansible_distribution == "CentOS"

    - name: Print packages
      debug:
        msg: "{{ packages.stdout_lines }}"

    - name: System User Password Modify Result
      local_action: copy content={{ packages.stdout }} dest=PACKAGES/{{ managed_ip }}/{{ time }}/pkg_result.txt

OS Package Manager에 대한 Playbook 분석

  • Inventory에 지정된 호스트가 만약 Debian 계열이라면 dpkg-query -f '${binary:Package}\n' -W 명령을 수행한다.
  • Inventory에 지정된 호스트가 만약 RedHat 계열이라면 rpm -qa 명령을 수행한다.
  • 수행 Sheel 상에서 결과를 출력하고, 증적은 APT_PACKAGES/ 디렉토리에 기록한다.

playbook 실행

# ansible-playbook -i hosts apt_query.yml

수행 결과

  • Debian 계열
# cat PACKAGES/172.16.0.100/2020-12-03/pkg_result.txt
acl
adduser
apt
apt-listchanges
apt-utils
aspell
aspell-en
autoconf
automake
autopoint
autotools-dev
base-files
base-passwd
bash
bash-completion
bc
bind9-host
binutils
bsdmainutils
bsdutils
...중략
  • RedHat 계열
# cat PACKAGES/172.16.0.100/2021-12-03/pkg_result.txt
abrt-addon-xorg-2.1.11-52.el7.centos.x86_64
less-458-9.el7.x86_64
webkitgtk4-jsc-2.20.5-1.el7.x86_64
sound-theme-freedesktop-0.8-3.el7.noarch
hunspell-ko-0.5.5-5.el7.noarch
gnu-free-fonts-common-20120503-8.el7.noarch
xorg-x11-server-Xorg-1.20.1-3.el7.x86_64
python-IPy-0.75-6.el7.noarch
libreport-gtk-2.1.11-42.el7.centos.x86_64
libss-1.42.9-13.el7.x86_64
compat-libtiff3-3.9.4-11.el7.x86_64
mobile-broadband-provider-info-1.20170310-1.el7.noarch
xorg-x11-drv-synaptics-1.9.0-2.el7.x86_64
nss-tools-3.36.0-7.el7_5.x86_64
gtksourceview3-3.24.8-1.el7.x86_64
libproxy-0.4.11-11.el7.x86_64
ed-1.9-4.el7.x86_64
khmeros-fonts-common-5.0-17.el7.noa