본문 바로가기

클라우드/앤서블(Ansible)

(28)
앤서블 Ansible 작업 제어 3 / 핸들러 # 핸들러 핸들러는 (Handler)는 작업을 실행하고 시스템의 변경(changed)이 있을 때만 별도의 작업을 호출하고 실행하는 작업이다. 플레이북을 실행 시키면 매번 서비스가 재시작 된다( reload,restart ) restart는 멱등성을 제공하지 못하기 때문에, restart 말고 reload를 해야하는데 reload를 할 수 없는 서비스들은 어떻게 해야 할 것인가? 핸들러를 사용 해 해결한다. 핸들러는 앤서블에서 멱등성을 제공하는 핵심이다. 설정파일(ex. httpd.conf)이 바뀌었을때만 이 작업이 실행이 되고, 작업이 실행이 돼서 변경이 되었을때만 다른 작업(서비스를 재시작하는)을 호출한다. 작업이 changed상태가 아니면 호출하지 않고 재시작하는 작업을 실행하지 않는다. 작업의 변경..
앤서블 Ansible 작업 제어 2 / 조건문 # 조건문 특정 조건에만 작업을 실행 하는것 예를들어 Redhat 계열의 리눅스는 Yum 모듈을 이용해서 패키지를 설치한다 Debian 계열의 리눅스는 apt모듈에 의해 패키지를 설치한다 이런것을을 조건으로 구성한다 Ansible의 조건문은 when이라는 키워드를 사용한다 (다른 언어의 if문에 해당된다) 조건에 대한 표현식은 테스트문 또는 필터를 사용할 수 있다 조건문에서 변수를 참조할땐 {{ }} 이중 중괄호를 사용하지 않는다. 바로 변수 사용 # 테스트 테스트는 표현식을 평가하고 참(true) 또는 거짓(false)를 반환한다 테스트문 when: 변수 연산 테스트문 (변수를 테스트 하기 위한 테스트문) 필터 when: 변수 |(파이프) 필터이름 # 이전 작업의 결과 테스트 플레이북을 실행할 때 특정..
앤서블 Ansible 작업 제어 1 / 반복문 # 반복문 task를 반복하는것 예를들어 사용자를 10명을 만들어야한고 가정해보자. 사용자는 user라는 모듈로 생성을 할 수 있는데, 반복문을 사용하지 않으면 user라는 모듈을 가지고 task를 10개 만들어야한다. 반복문을 이용해 반복하는 작업을 효율적으로 줄일 수 있다. 모듈의 키워드를 사용한다. Ansible 2.4 까지는 with_* 키워드를 사용하여 작업 하였는데, Ansible 2.5 부터는 조금더 명확한 loop 키워드를 사용한다. with_* 키워드에 대한 여러가지 반복문을 완전히 대체하는 것은 아니지만, 거의 대부분 loop에서도 유효하다. 패키지 관련된 모듈은 반복문을 쓰지 않을것을 권장한다. # 단순 반복 반목문에서 제공되는 목록을 참조하는 변수명은 항상 item이다. debug ..
앤서블 Ansible 변수 debug 모듈 상태나 선언문들을 출력해준다 , 디버깅을 위한 목적 msg 출력 메세지 default 값 ( Hello world! ) vars 는 play 레벨에 설정을 한다 변수는 key,value 형태로 선언한다 message(변수명) : "hello ldh" (값) 변수값을 참조하는 방법 "{{ 변수명 }}" 부분 참조는 허용되지 않는다 변수가 들어가면 변수에 해당하는 같은 값들을 전부 묶어주어야 한다 문법오류 msg: "Korean: {{ korean }}, English: {{ english }}" ( O ) msg: Korean: "{{ korean }}", English: "{{ english }}" ( X ) path: "/var/www/html/{{ wp_path }}" ( O ) pa..
앤서블 Ansible 플레이북 ( playbook ) / wordpress 삭제 구성하기 wpremove.yaml 더보기 - name: Wordpress Remove hosts: 192.168.200.102 tasks: - name: Stop Apache2 Service service: name: apache2 state: stopped ignore_errors: true - name: Remove Apache2 Package apt: name: apache2, php, php-mysql, php-gd, php-mbstring state: absent purge: yes - name: Remove Dep-Apache2 Package apt: autoremove: yes purge: yes - name: Remove Apache Configuration file: path: /etc/apach..
앤서블 Ansible 플레이북 ( playbook ) / wordpress 구성하기 2 wpdeploy.yaml 더보기 - name: MySQL Deployment hosts: 192.168.200.102 tasks: - name: Install MySQL Package apt: update_cache: true name: mysql-server, python3-pymysql state: present - name: Starting MySQL Service service: name: mysql state: started enabled: yes - name: Create Wordpress Database mysql_db: login_unix_socket: /var/run/mysqld/mysqld.sock name: wpdb state: present - name: Create Wordpres..
앤서블 Ansible 플레이북 ( playbook ) / wordpress 구성하기 1 # Ad-hoc 명령으로 wordpress 구성하기 https://wordpress.org/download/releases/ Releases Browse and download previous versions of WordPress for testing and development. wordpress.org 1. apache2 패키지 설치 2. 서비스 실행 확인 3. wordpress파일 다운 4. 아카이브 풀기 1. apache 패키지 설치 2. 서비스 실행 확인 3. wordpress파일 다운 4. 아카이브 풀기 이것을 playbook으로 작성해보자 # playbook으로 wordpress 구성하기 플레이북은 리스트로 시작한다. Adhoc 커멘드를 사용했을 때 작업 할 managed node , mo..
앤서블 Ansible Ad-hoc 명령으로 mysql 구성하기 # Ansible Ad-hoc 명령으로 mysql 구성하기 ansible-doc MySQL_db, MySQL_user 모듈을 사용하기 위한 요구사항이 pymysql 이기 때문에 pymysql 패키지를 설치 해야한다. 파이썬을 이용해서 mysql을 컨트롤하기 위한 라이브러리 apt 패키지 python3-pymysql pip3 패키지 pymysql 같은 패키지이지만 배포판마다 패키지 이름이 다를 수 있다 서비스 확인 /var/run/mysqld/mysqld.sock 소켓 파일 소켓파일을 이용하여 해당되는 mysql 서버 데몬(프로세스,서비스)에 전달해준다. DB세팅을 할때 , pymsql 라이브러리를 통해 접근해야하는데 패스워드가 없는 계정으로 접근하는 방법이 없기 때문에, 접근할때 소켓파일을 통해 접근한다..