스터디를 위한 테스트 환경 생성
생성되는 vm에 기본적으로 추가되는 계정과 비밀번호 또한 알고있다는 가정하에 설정 시작.
인벤토리를 활용한 제어노드 지정
계정 : centos
비밀번호 : passed
해당 계정은 sudo 권한을 가지고있음
호스트들을 그룹화하여 각 그룹에 대한 변수를 다르게 지정해줄 수 있어 체계적으로 관리 가능함.
호스트가 늘어나 한 파일에서 관리가 어려워지면 파일을 분리하여 관리해줄 수 있음.
호스트만 정의해주고 처음으로 ping 모듈을 통하여 테스트 해보면 제어노드의 계정 그대로 ssh 접속을 시도하고 있고 key checking을 하는것을 볼 수 있음.
아래와 같이 그룹에 대한 변수를 지정해주어 key checking을 해제해줄 수 있고 원하는 계정을 사용가능함.
또한 모든 그룹이나 그룹 내에서 공통적으로 사용할 변수를 지정하여주고 변수 우선순위를 활용하여 같은 이름의 변수를 호스트마다 다른 값을 넣어줄 수 있음.
ansible_user ansible_password 변수를 사용하여 제어노드에서 사용할 user와 password를 지정.
host_key_checking 변수를 사용하여 key checking을 해제.
다시 ping모듈을 사용하여 테스트해보면 정상적으로 결과를 받아오는 것을 확인할수 있음.
Ansible ad-hoc sudo 권한으로 사용
운영중인 서버의 설정을 바꾸기위해 전체나 특정 그룹의 서버에 한 두줄짜리 명령어만 실행이 필요한 경우가 종종있는데, 그때는 ansible ad-hoc을 활용하면 편리함.
패키지 설치 및 서버들을 세팅하기 위해서 특정 명령어를 실행하기 위해 sudo 권한을 가지고 명령어를 실행해야 하는 경우가 많은데 기본설정을 사용하면 처음에 설정 준 유저의 권한으로 명령어를 실행하기 때문에 모든 명령어를 실행할 수 있진 않음.
ansoble_become 변수를 사용허여 기본적으로 sudo 권한을 주고 명령어를 실행하여 주거나 특정 그룹이나 특정 명령에만 권한을 부여할 수 있음.
또한 anaible_become_method를 통하여 권한을 부여하는 방법또한 변경 가능
다음중 하나를 선택할 수 있음.
sudo | su | pbrun | pfexec | doas | dzdo | ksu
이제 permission deny가 되지않고 정상적으로 명령어가 실행되는것이 확인됨
Gathering Facts 캐싱
ansible playbook 실행 시 gathering facts를 비활성화 하지 않으면 제어노드는 관리 노드의 facts를 수집하기 시작함.
facts에는 관리 노드의 ip, timezone 등과 같은 다양한 시스템정보를 수집한 정보임.
운영중 ansible을 활용할 떄 해당 관리노드의 정보가 필요한 경우도 있어 facts 수집을 끄지않고 사용할 때가 있음.
하지만 운영중인 호스트나 VM수가 많으면 gathering facts 단계에서 시간이 굉장히 오래걸릴 수 있음.
이떄를 위해 facts를 파일이나 db에 캐싱하여 활용할 수 있음.
playbook의 위치에 ansible.cfg 파일을 생성하여 facts관련 설정을 할 수 있음.
ansible.cfg
[defaults]
gathering = smart
fact_caching = jsonfile
fact_caching_connection = facts
설정 후 ansible playbook을 실행하면 해당 디렉토리에 각 관리노드별 facts가 파일로 캐싱됨.
'A101[1기]' 카테고리의 다른 글
Ansible 스터디 4주차 - 보안설정 자동화 (0) | 2024.02.05 |
---|---|
Ansible 스터디 3주차 - 환경 설정 자동화 (0) | 2024.02.03 |
Ansible 스터디 3주차 - 시스템 구축 자동화 (0) | 2024.02.03 |
Ansible 스터디 2주차 반복문과 조건문, 롤과 콘텐츠 컬렉션 (0) | 2024.01.19 |