1. 사용자 계정 생성하기
1.1 사전 분석
- 사용자 계정과 패스워드는 Vault를 이용하여 암호화를 처리한다.
- 사용자 계정 생성은
ansible.builtin.user
모듈을 이용한다.
1.2 플레이북 설계
1.3 플레이북 개발
https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_09.1
2. SSH 키 생성 및 복사하기
2.1 사전 분석
- 사용자 아이드는 외부 변수로 받는다.
- ansible-server에서 앤서블 계정을 만들고 SSH 키를 생성한다.
- ansible-server에서 생성된 SSH 공개 키를 각 tnode에 복사한다.
- 계정을 생성할 때는
ansible.builtin.user
모듈을 이용하고, SSH 공개 키를 복사할 때는 ansible.posix.authorized_key
모듈을 이용한다.
2.2 플레이북 설계
- 앤서블 공식 문서의 콘텐츠 컬렉션에서 플레이북 개발에 필요한 SSH 키 생성 모듈과 SSH 키 복사 모듈을 찾았다면, 해당 모듈의 예제와 파라미터 정보를 이용해 플레이북을 설계한다.
- 해당 플레이북명은 create_sshkey.yml 로 설정하고, ‘Create ssh key' 태스크와 ‘Copy SSH Pub Key’ 라는 2개의 태스크를 갖는다.
- ‘Create ssh key’ 태스크는 localhost에서 실행하고, ‘Copy SSH Pub Key’ 태스크는 tnode에서 실행한다.
- 인벤토리에는 다음과 같이 tnode라는 그룹을 만든 다음 모든 관리 노드를 tnode 그룹으로 정의한다.
2.3 플레이북 개발
https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_09.2
3. NTP 서버 설치 및 설정하기
3.1 사전 분석
- NTP 서버 주소는 메인 플레이북에서 정의한다.
- 운영체제가 CentOS이거나 레드햇이면 dnf 모듈을 사용하고, 우분투이면 apt 모듈을 사용하여 chrony를 설치한다.
- Jinja2 템플릿 방식의
chrony.conf
파일을 대상 호스트로 복사한다.
- 설정 파일이 복사되면 chrony 서비스를 재시작한다.
- 다음에도 사용할 수 있도록 role을 이용한다.
3.2 플레이북 설계
3.3 플레이북 개발
https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_09.3
4. 패키지 리포지터리 환경 설정하기
4.1 사전 분석
- httpd 서비스 설치와 고나련된 모든 태스크는 role을 이용한다.
- role을 통해 리포지터리 환경 설정이 끝나면, 리포지터리 URL을 확인한다.
- role 디렉터리 생성한다.
- httpd 서비스 설치한다.
repo.conf
라는 환경 설정 파일을 대상 노드로 복사한다.
- Httpd 서비스를 재시작하고 sefcontext 설정한다.
- http 서비스를 firewalld에 추가하고, firewalld 서비스를 reload한다.
4.2 플레이북 설계
4.3 플레이북 개발
https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_09.4