본문으로 바로가기

Playbook 모듈 작성 연습

category Ansible 2021. 6. 21. 15:33
반응형

Playbook yaml 파일을 작성하다 보면 자주 사용되는 모듈이 있다. 그것에 관해서 정리하고 실습해 봤다.

 

shell에서 ansible 모듈의 역할을 알고 싶을 떄

$ansible-doc [모듈 이름]으로 확인해 주면 된다.

 

1. 파일 작업

file - 파일과 디렉터리의 상태 작업 

모듈을 사용할 때 파일과 디렉토리를 생성, 삭제하고 권한을 변경할 수 있다.

path: 경로를 지정하고 경로중에 없는 디렉토리가 있다면 생성을 해준다.

state: directory  ## 존재하지 않는 디렉토리 생성

directory 외에도

file 기본값. 아래에서 설명할 파일의 속성을 변경할 때 이용. 파일을 새로 생성하지 않고 없을 때는 에러가 발생한다
touch 파일이 없을 때 빈 파일로 생성하고 기존 파일은 타임스탬프가 변경된다.
link 심볼릭 링크를 생성
absent path가 존재하는 경우, 파일과 디렉토리를 삭제, 디렉토리도 재귀적으로 삭제되므로 주의

link, hard는 원본의 경로를 지정해야 하므로 다음과 같이 path 대신에 src(원본) 과 dest(대상)을 지정해야 한다.

권한 변경시에는 

owner: [파일 소유자]

group: [그룹 소유]

mode: "[0755와 같이 8진수로 설정할 수 있으나 제일 처음에 0 을 붙이지 않으면 보통은 10진법의 정수로 간주하여 의도치 않은 값이 되어버릴 수 있습니다.]"

---
- name: tmp/dir1 create
  hosts: servers
  tasks:
    - name: create
      file:
        path: /tmp/dir1
        state: directory
- name: link create
  hosts: servers
  tasks:
    - name: symbollink
      file:
        src: /tmp/dir1
        dest: /tmp/link_to_dir1
        state: link
- name: useradd
  hosts: servers
  tasks:
    - name: ansibleuseradd
      command: "useradd ansibleAdmin"
- name: chmod
  hosts: servers
  become: true
  tasks:
    - name: /tmp/dir1 all used 777
      file:
        path: /tmp/dir1
        state: directory
        owner: ansibleAdmin
        group: ansibleAdmin
        mode: "u=rwx,g=rx,o=rx"

copy - 파일을 작업 대상에게 전송 

copy:
  src: original_file   // 원본파일
  dest: ~/copied_file  // 목적지 파일

lineinfile - 기존 파일을 행 단위로 수정

 

2. 명령어 실행 모듈

command - 임의의 명령을 실행

creates 명령을 실행한 후에 생성될 파일의 경로를 지정. 파일이 존재하지 않는 경우에만 생성한다.
removes 명령을 실행한 후에 삭제될 파일의 경로를 지정. 파일이 존재 하는 경우에만 삭제한다.
chdir 명령을 실행할 때의 기점이 되는 디렉터리를 지정
executable 명령을 실행할 때에 사용될 셸의 경로, 지정하지 않으면 사용자의 기본 로그인 셸을 사용한다.

변수를 사용하는 경우에는 quote 필터를 이용해 항상 값을 깨끗하게 하는 것이 좋다.

반응형

'Ansible' 카테고리의 다른 글

AWS 앤서블로 관리하기 -1 (Dynamic inventory 생성)  (0) 2021.06.30
Ansible 정적 인벤터리  (0) 2021.06.21
Ansible Playbook 활용.  (0) 2021.06.21
앤서블 ad-hoc 활용하기 (1)  (0) 2021.06.21
앤서블의 구성 파일  (0) 2021.06.21