DevOps/Ansible

Ansible Module

devdubu 2023. 8. 4. 06:27

Ansible Module

ansible 의 공식 문서이다.

Ansible Documentation - Ansible Documentation

여기서 왼쪽 메뉴에 보면 Collection Index가 보인다.

Collection Index 에서 amazon도 좋지만 ansible의 순수 실력을 올리기 위해서는

Ansible.Builtin - Ansible Documentation

ansible의 내장 docs인 build-in part를 읽어보는 것도 좋은 방법이다.

실습

---

- name: Example
  hosts: ubuntu
  become: true
  tasks:
  # Docs: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/user_module.html
  - name: "Create a user"
    user: "name=fastcampus shell=/bin/bash"

  - name: "Hello World"
    command: "echo 'Hello World!'"

  # Docs: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html
  - name: "Add DNS server to resolv.conf"
    lineinfile:
      path: /etc/resolv.conf
      line: 'nameserver 8.8.8.8'

  # Docs: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/apt_module.html
  - name: "Install Nginx"
    apt:
      name: nginx
      state: present
      update_cache: true

  # Docs: https://docs.ansible.com/ansible/latest/collections/ansible/posix/synchronize_module.html
  - name: "Upload web directory"
    synchronize:
      src: files/html/
      dest: /var/www/html
      archive: true
      checksum: true
      recursive: true
      delete: true

  # Docs: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html
  - name: "Copy nginx configuration file"
    copy:
      src: files/default
      dest: /etc/nginx/sites-enabled/default
      owner: "{{ ansible_user }}"
      group: "{{ ansible_user }}"
      mode: '0644'

  # Docs: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html
  - name: "Ensure nginx service started"
    service:
      name: nginx
      state: started

user

  • 사용자들을 관리하는 module을 의미한다.

ansible.builtin.user module - Manage user accounts - Ansible Documentation

lineinfile

  • 해당 모듈은 특정 파일의 특정 라인에 해당하는 코드가 있는지 확인해주는 모듈이다.
  • 만약 해당 라인이 없다면 추가, 해당 라인이 존재한다면 skip을 하는 동장 방식이다.
  • 이는 설정 파일을 확인하고 싶을 때 아주 유용한 명령어이다.

ansible.builtin.lineinfile module - Manage lines in text files - Ansible Documentation

apt

  • ubuntu의 경우 apt-get을 하는 것이다
  • update_cache는 apt-get update 라고 생각하면 된다.

ansible.builtin.apt module - Manages apt-packages - Ansible Documentation

synchronize

  • linux 명령어의 rsync와 유사한 명령어 이다.
  • src - 로컬 데스크탑, dest : 원격 데스크탑에 위치한 폴더/파일 이라고 생각하면 된다.
  • 이는 로컬과 원격데스크탑이 파일의 구조가 다른지 같으지 판별하는 명령어이다, 자세한 부분은 공식 문서로

ansible.posix.synchronize module - A wrapper around rsync to make common tasks in your playbooks quick and easy - Ansible Documentation

copy

  • src, dest는 위와 의미가 동일하다.
  • 이는 파일을 복사하는 명령어이다.

ansible.builtin.copy module - Copy files to remote locations - Ansible Documentation

service

  • damon으로 서비스를 실행하라는 모듈이다.

ansible.builtin.service module - Manage services - Ansible Documentation

ansible의 작성법

하나의 String

- name: "Create a user"
    user: "name=fastcampus shell=/bin/bash"

오른쪽과 같이 ‘name=fastcampus' 처럼 ‘[키]=[값]’ 으로 표현하는 방법

yaml 문법 방식

apt:
      name: nginx
      state: present
      update_cache: true

yaml의 문법처럼

[키] : [값]

으로 표현 하는 방법

free-form 방식

name: :"Hello World"
    command: "echo 'Hello World'"

“[명령어] ’[값]’ ” 의 방식으로 작성하는 방법이다.

command 모듈을 사용할 때 사용 가능하다.

'DevOps > Ansible' 카테고리의 다른 글

Ansible Variables  (0) 2023.08.04
Ansible Handler  (0) 2023.08.04
Ansible playbook  (0) 2023.08.04
Ansible Inventory  (0) 2023.08.04
Ansible 설치  (0) 2023.08.04