티스토리 뷰
@기본적인 옵션들@
[적용될 노드들을 선택(-i 옵션)] ansible all ~~~~~
all은 /etc/ansible/hosts에 등록된 모든 노드들에게 적용.
all 대신에 /etc/ansible/hosts 내에서 지정한 그룹명을 입력하거나
따로 노드들의 주소가 담긴 파일을 만들어 -i(--inventory-file) 파일명 all 또는 -i 파일명 호스트주소 처럼 i 옵션을 사용할 수 있다.
[암호를 물어보도록 설정 (-k 옵션)] ansible all ~~~ -k(--ask-pass)
authorized_keys를 등록하지 않은 상태라면 항상 써주어야 하는 옵션이다.
처음 연결하려는 노드에 대해서는 ansible 노드지정 -m ping 명령어를 사용해 yes를 입력해 known_hosts_key를 받아야 한다.
[적용되는 노드들을 확인 (--list-hosts 옵션)] ansible all ~~~~ --list-hosts
이 옵션을 주면 실제로 실행되는 게 아니라 적용되는 노드들을 확인만 하기 때문에 -k 옵션을 주지 않아도 된다.
[사용하는 모듈 (-m 옵션)] ansible all -m ping ~~~~
(지정하지 않을 시)기본값은 shell이라는 모듈이다.
@모듈과 사용법@
[shell] 노드들에 명령 구문을 전달하고 해당 결과를 다시 반환
ansible all -m shell -a "ls -a" -k == ansible all -a "ls -a" -k
-a 옵션으로 명령 구문을 넣어준다. -a 옵션의 인자값이 한 단어일때는 큰따옴표가 필요 없지만 이 또한 명시성을 높이기 위해 넣어주는 것을 권장한다.
그리고 shell은 default로 지정되는 모듈이기 때문에 생략이 가능하다. but 명시성을 높이고 오류를 줄이기 위해 항상 넣어주는 것을 권장한다.
[ping] 서버와 노드간의 통신상태 체크
ansible all -m ping -k
그냥 쉘에 입력하는 ping 명령어와 같지 않다.
ansible -i host.lst 192.168.1.101 -m ping -k != ping 192.168.1.101
[user] 사용자를 추가/삭제/관리
ansible all -m user -a "name=username" -k
위처럼 해주면 username이라는 이름을 가진 유저를 생성한다.
-a 옵션의 인자값으로 "name=username state=absent" 주면 해당 유저를 삭제한다.
[yum] 패키지 설치
ansible all -m yum -a "name=httpd state=present" -k
httpd라는 이름의 패키지를 설치한다. state에 present 대신 absent 주면 삭제한다.
state=latest 를 주면 설치 안되어 있을 때는 설치를, 설치가 되어있을 땐 최신 버전으로 업그레이드를 해준다.
[copy] 파일을 복사. 앤서블 서버에서 노드로 파일을 전송하고자 할 때 사용
ansible all -m copy -a "src=보낼파일의위치와이름 dest=받을파일의위치와이름" -k
[service] 리눅스에서 제공하는 서비스들에 대한 시작/종료/재시작 등의 기능 제공
ansible all -m service -a "name=httpd state=started" -k
httpd라는 이름의 서비스를 시작하는 명령어. 헷갈리지 말아야 할 것. 설치와 삭제는 yum 모듈을 사용하고 시작/종료/재시작 등은 service 모듈을 사용한다.
yum 모듈이 yum install / yum remove 같은 거라면
service 모듈은 systemctl 같은 것
[lineinfile] 파일에 내용을 추가. 멱등성 고려.
ansible all -m lineinfile -a "path=파일의경로를포함한이름 line=추가할내용" -k
이 모듈을 사용하면
echo "추가할내용" >> 파일의경로를포함한이름
위의 명령과는 다르게 이미 있는 내용이라면 추가되지 않아 멱등성이 유지된다.
[get_url] url을 입력해 다운받기
ansible all -m get_url -a "url=https://www.naver.com dest=저장할경로 mode=0644" -k
내려받을 파일의 권한까지 미리 지정해줄 수 있다.
'가상화\자동화' 카테고리의 다른 글
[도커Docker] 호스트와 컨테이너 내부 디렉터리 연결하기 : 바인드 마운트 / 볼륨 (0) | 2023.10.11 |
---|---|
[앤서블Ansible] 플레이북playbook 사용하기 (0) | 2023.10.03 |
[도커Docker] 컨테이너Container, 이미지Image 이해하기 (0) | 2023.10.02 |