OS [Linux] ansible 환경설정 및 애드혹
페이지 정보
작성자 LeeHyongDong 아이디로 검색 전체게시물 댓글 0건 조회 3,482회 좋아요 0회 작성일 21-08-24 12:09본문
본문은 ansible 환경설정 및 애드혹 사용법을 서술하는 글로 ansible에 대한 설명은 아래 링크에서 확인할 수 있다.
http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=148&sca=OS
목차
1. ansible 인벤토리 관리
2. ansible 구성 파일 관리
3. ansible adhoc 사용 방법
4. 테스트 과정 에러 목록 및 해결
1. ansible 인벤토리 관리
1.1. 인벤토리의 정의
인벤토리는 ansible에서 관리할 호스트 리스트를 정의한다.
호스트는 그룹으로 할당하여 집합적으로 관리할 수 있으며 하위 그룹을 그룹하여 상위 그룹을 생성할수 있다.
호스트는 여러 그룹의 멤버가 될 수 있으며 인벤토리는 인벤토리에서 정의하는 호스트 및 그룹에 적용하는 변수를 설정할 수 있다.
1.2. 정적 인벤토리에 관리 대상 호스트 지정
default 관리 호스트 파일은 /etc/ansible/hosts 이며 인벤토리 위치 설정을 변경하지 않으면 해당 파일을 참조하여 관리한다.
- ansible 파일
/etc/ansible의 hosts에 설정을 추가하여 관리 대상을 설정한다.
- 관리대상 설정
설정은 []안에 group명 하단에 ip혹은 hostname을 추가한다 hostname을 설정할경우 /etc/hosts로 설정이 되어있어야 한다.
group을 다시 group으로 생성할 수 있으며 :children을 group명 뒤에 붙여줘야 정상적으로 인식한다.
- ping 테스트
설정이 정상적으로 되어있을 경우 ping테스트 결과가 SUCCES로 출력이 된다.
없는 ip인 test3으로 ping테스트를 하면 UNREACHABLE으로 출력이 되며 에러 msg를 출력한다.
2. ansible 구성 파일
2.1. ansible의 구성
ansible 패키지는 /etc/ansible/ansible.cfg에 있는 기본 구성파일을 제공한다. 이 파일은 ansible을 실행할때 다른 구성파일이 없으면 실행된다.
ansible 명령어를 실행할때 구성파일이 존재하는 디랙토리에서 ansible 명령어를 실행하면 해당 구성파일을 사용한다.
- 기본 구성 파일 위치
ansible.cfg에 많은 설정값이 있으며 중요 설정값만 환경 구성으로 따로 설정이 가능하다.
- 자주 사용되는 지시문
해당 설정은 자주 사용되는 설정으로 이외에도 다양하게 설정값이 존재한다.
2.2. ansible 환경 설정
ansible을 실행할때 ansible.cfg 파일이 현재 디렉터리에 있는 경우 글로벌 설정 대신 사용된다.
글로벌 환경 설정을 사용해도 되지만 개별 환경설정을 생성하여 사용하는것을 권장하고 있다.
- 현재 사용 config 확인
ansible --version을 통해 현재 버전 및 설정을 확인할 수 있다.
해당 설정에서 config file을 보면 설정파일이 없는 디렉토리에서는 글로벌 환경설정을 사용하지만
디렉토리에 ansible.cfg 파일이 있으면 해당 설정파일을 config file로 사용하는것을 확인할 수 있다.
- ansible.cfg 설정
환경설정의 예시로 inventory는 호스트 그룹 위치로 인벤토리 파일이나 인벤토리 디렉토리를 지정할수 있다.
remote_user = 접속 계정을 변경하는 설정값으로 기본 설정은 root이다.
forks = ansible을 실행할때 한번에 몇개의 호스트를 동시에 실행할지 지정하는 옵션이다.
ask_pass = ansible 실행과정에 ssh 암호를 요청하게 설정한다. 기본 설정은 false이며 ssh 공개키 인증을 사용하지 않을경우 true로 설정해야한다.
become = 접속 계정으로 연결후 자동으로 관리 계정으로 사용자를 전환할지 기본 설정은 false이며 become_user를 설정하지 않으면 root로 연결된다.
become_method = 사용자 전환 방식 기본설정은 sudo이며 su로 설정이 가능하다.
become_user = 관리 호스트로 전환할 사용자
become_ask_pass = 사용자 전환 할때 암호를 요청하는지 여부 기본값은 false이며 만약 sudo 혹은 su로 접근할때 암호가 필요할경우 true로 설정해야함
3.ansible adhoc 사용 방법
3.1. 애드혹 명령이란
애드혹 명령은 추후 재사용을 위하여 별도의 파일로 저장하지 않고 한번의 ansible 작업을 신속하게 실행하는 방법이다.
애드혹 명령은 신속한 테스트 및 변경이 쉽다
3.2. 애드혹 명령 실행
- ping 모듈 테스트
ansible <hostsgroup명> -m <module> -a "<module options>"
예시용 애드혹으로 ping 모듈을 사용하면 해당 그룹에 있는 호스트에 ping테스트를 진행한다.
- command 테스트
-m 옵션을 넣지 않을경우 command 모듈이 사용되며 -a 옵션에 "실행 명령어"로 사용할수 있다.
이 외에도 다양한 모듈이 있으며 대표적인 모듈만 설명드리겠습니다.
- 자주 쓰이는 모듈
상세한 설명은 http://docs.ansible.com/ansible/latest/modules/modules_by_category.html 에서 확인할 수 있습니다.
4. 테스트 과정 에러 목록 및 해결
4.1. ssh-copy-id 미 실행
- 에러 메시지
ssh를 통해 host에 접근하는데 패스워드를 요청해서 해당 서버에 접근 실패 해결 방법은 2개의 방법이 있다.
◎ 공개키 이용
ssh-keygen 명령어로 공개키를 생성후 ssh-copy-id 명령어로 해당 서버에 전달
◎ ansible.cfg 파일 수정
ansible 설정 파일에 ask_pass = true 설정 추가하여 ansible 사용할때 접근 계정의 패스워드를 입력할수있다.
4.2. 리스트에 없는 호스트
- 에러 메시지
ansible 호스트 파일에 없어서 발생하는 에러 메시지
4.3. "Missing sudo password"
- 에러 메시지
해당 메시지가 발생하는 원인은 admin 계정이 wheel 그룹에 속해있지 않거나 sudo 접근 단계에서 password를 요청해서 발생한 원인이다.
- 151 서버 sudoers 설정
해당 파일을 수정해 wheel 그룹은 sudo 명령어를 사용할때 password를 요청하지 않게 변경
sudo를 사용할때 password를 요청하지 않을경우 보안이 취약해지기 때문에 해당 설정을 변경하지 않고 ansible 명령어를 사용할때 password를 요청하게 설정이 가능하다.
- 현재 설정 및 결과
해당 패스워드 입력은 모든 서버 접근에 사용하며 다른 패스워드가 있을경우 그룹을 나눠 실행해야 한다.
댓글목록
등록된 댓글이 없습니다.