Commit cec510bc authored by JooHan Hong's avatar JooHan Hong

2021-03-09, update1

parent 4df48f6d
Pipeline #5130 passed with stages
in 3 seconds
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
# Ansible의 shell 모듈을 이용한 OS 패키지 리스트정보 수집 # Ansible의 shell 모듈을 이용한 OS 패키지 리스트정보 수집
> 데비안 계열 OS의 dpkg 명령을 통한 전체 패키지 리스트 수집을 자동화 한다. > OS 별 Package 관리명령을 통한 전체 패키지 리스트 수집을 자동화 한다.
## 주요 기능 ## 주요 기능
- 수행 후 APT_PACKAGES/*IP주소*/*일자*/dpkg_result.txt 파일을 남기도록 한다. - 수행 후 APT_PACKAGES/*IP주소*/*일자*/pkg_result.txt 파일을 남기도록 한다.
## Inventory 설정 ## Inventory 설정
...@@ -42,29 +42,35 @@ ansible_python_interpreter: python2.7 ...@@ -42,29 +42,35 @@ ansible_python_interpreter: python2.7
```python ```python
--- ---
- name: APT PACKAGE_QUERY Action - name: OS PACKAGE_QUERY Action
hosts: USERS hosts: ALL_HOSTS
vars: vars:
time: "{{lookup('pipe','date \"+%Y-%m-%d\"')}}" time: "{{lookup('pipe','date \"+%Y-%m-%d\"')}}"
tasks: tasks:
- name: Local Directory Create - name: Local Directory Create
local_action: command mkdir -p APT_PACKAGES/{{ managed_ip }}/{{ time }} local_action: command mkdir -p PACKAGES/{{ managed_ip }}/{{ time }}
- name: Get packages - name: Get packages
shell: dpkg-query -f '${binary:Package}\n' -W shell: dpkg-query -f '${binary:Package}\n' -W
register: packages register: packages
when: ansible_os_family == "Debian"
- name: Get packages
shell: rpm -qa
register: packages
when: ansible_distribution == "CentOS"
- name: Print packages - name: Print packages
debug: debug:
msg: "{{ packages.stdout_lines }}" msg: "{{ packages.stdout_lines }}"
- name: System User Password Modify Result - name: System User Password Modify Result
local_action: copy content={{ packages.stdout }} dest=APT_PACKAGES/{{ managed_ip }}/{{ time }}/dpkg_result.txt local_action: copy content={{ packages.stdout }} dest=PACKAGES/{{ managed_ip }}/{{ time }}/pkg_result.txt
``` ```
`Debian 계열의 APT 매니지`에 대한 Playbook 분석 `OS Package Manager`에 대한 Playbook 분석
* [ ] Inventory에 지정된 호스트 dpkg-query -f '${binary:Package}\n' -W 명령을 수행한다. * [ ] Inventory에 지정된 호스트가 만약 Debian 계열이라면 dpkg-query -f '${binary:Package}\n' -W 명령을 수행한다.
* [ ] 수행 Sheel 상에서 결과를 출력하고, 증적은 APT_PACKAGES/ 디렉토리에 기록한다. * [ ] 수행 Sheel 상에서 결과를 출력하고, 증적은 APT_PACKAGES/ 디렉토리에 기록한다.
...@@ -76,8 +82,10 @@ ansible_python_interpreter: python2.7 ...@@ -76,8 +82,10 @@ ansible_python_interpreter: python2.7
## 수행 결과 ## 수행 결과
- Debian 계열
```bash ```bash
# cat APT_PACKAGES/172.16.0.100/2020-12-03/dpkg_result.txt # cat PACKAGES/172.16.0.100/2020-12-03/pkg_result.txt
acl acl
adduser adduser
apt apt
...@@ -100,3 +108,29 @@ bsdmainutils ...@@ -100,3 +108,29 @@ bsdmainutils
bsdutils bsdutils
...중략 ...중략
``` ```
- RedHat 계열
```bash
# 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
```
...@@ -9,10 +9,9 @@ ...@@ -9,10 +9,9 @@
| NO | ITEM | Content | 비고 | | NO | ITEM | Content | 비고 |
| ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ |
| 1 | OS Version Fetch | [GO](./VERSIONS/) | | | 1 | OS Version Fetch | [GO](./VERSIONS/) | |
| 2 | OS Package Installing (apt) | [GO](./APT/) | | | 2 | OS Package Listing | [GO](./PACKAGE/) | |
| 3 | OS Minimal Packages Installing (apt) | [GO](./APT/MINIMAL/) | | | 3 | OS Minimal Packages Installing | [GO](./PACKAGE/MINIMAL/) | |
| 4 | OS Package Installing (yum) | [GO](./YUM/) | | | 5 | File Fetch ITEM | [GO](./FILE_FETCH/) | |
| 5 | OS File Fetch | [GO](./FILE_FETCH/) | | | 6 | File Copy ITEM | [GO](./FILE_COPY/) | |
| 6 | OS File Copy | [GO](./FILE_COPY/) | |
| 7 | NFS Client Setting | [GO](./NFS_CLIENT/) | | | 7 | NFS Client Setting | [GO](./NFS_CLIENT/) | |
| 8 | Zabbix-Agent Installing | [GO](./ZABBIX/) | | | 8 | Zabbix-Agent Installing | [GO](./ZABBIX/) | |
...@@ -31,6 +31,47 @@ Ansible에서 **Node에 대한 정보를 변수로 수집하는 정보**를 말 ...@@ -31,6 +31,47 @@ Ansible에서 **Node에 대한 정보를 변수로 수집하는 정보**를 말
tasks: tasks:
``` ```
Facts 변수는 다음의 스크립트를 통해 간단하게 수집할 수 있다.
```bash
#!/bin/bash
host=""
if [[ "$1" = "" ]]; then
host="현재 디렉토리의 hosts 파일에 호스트를 입력하십시오!"
echo $host
exit;
else
host=$1
fi
ansible -i hosts $1 -m setup
```
단, 단일 시스템에 대한 수집을 기준으로 한다.
!참고 : 만약 다음과 같은 에러가 발생되면서 Playbook의 실행이 안될 경우
```plaintext
호스트명 | FAILED! => {
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
}
```
이는 최초 접속 시에 대부분 발생되면, 근본원인 원인은 ssh의 공개키 교환이 안됐기 때문이다. 따라서 다음과 같이 설정하면 된다.
- **전역 설정** : /etc/ansible/ansible.cfg
- 지역 설정 : ./ansible.cfg
- 설정 내역 :
```python
[defaults]
host_key_checking = False
```
## 멱등성(idempotent)이란 ? ## 멱등성(idempotent)이란 ?
**연산 수행을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성** 이라고 한다. **연산 수행을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성** 이라고 한다.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment