• Home
  • About
    • 2daistheday's Tech Blog photo

      2dayistheday

      Today is the day.

    • Learn More
    • Email
    • Facebook
    • LinkedIn
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

(2) 앤서블(ansible) 사용

11 Dec 2017

Reading time ~1 minute

[macos]

  1. 설치(http://docs.ansible.com/ansible/latest/intro_installation.html)
    여러가지 방법이 있습니다. pip로 설치할 수도 있구요.
    sudo easy_install pip
    sudo pip install ansible
    

    brew로 설치할수도 있습니다.

    brew install ansible
    
  2. 앤서블 옵션

    • -i : (–inventory-file) 적용, / etc/ansible/hosts 에 있는 것 말구 특정 노드만을 명령시키고 싶으면 인벤토리를 수정해서 적용할 수 있음

      ansible all -i /usr/local/etc/ansible/hosts -m ping
      
    • -m : (–module-name) 모듈을 이용하겠다는 의미로 기본적으로 제공되는 수행을 이용할 수 있습니다.

      ansible all -m ping
      

      위에서 사용한 것처럼 ping모듈을 이용하기 위해 옵션을 주고 사용합니다. 너무 많은 모듈이 있기 때문에 doc을 확인 하시고 자주 쓰는 모듈만 몇가지 소개하겠습니다.

      • ping : 호스트와 서버와 SSH통신이 가능한지 알기위해 hosts에 정의된 호스트들에게 ping을 한번 날려봅니다.

      • shell : bash shell을 이용해서 명령어를 날릴 수 있습니다.

        
        
      • ..

      • ..

    • -k : (–ask-pass) 패스워드를 준다

    • -K : (–ask-become-pass)

      ansible all -m ping -k -K
      

      SSH말고도 한번 더 SUDO SSH 키를 묻는데, 실제 작업환경에서는 유저와 관리자가 다를 수 있고, 관리자의 키를 필요로하는 경우가 있기 때문에 사용한다.

    • –list-hosts : 적용되는 호스트들을 보여준다.

      ansible nginx -m ping —list-hosts
      

      명령어를 하기 전에 영향받는 호스트를 알고 싶다고 하면 이 명령어 옵션을 통해 적용받는 호스트를 확인할 수 있다.

  3. Host Inventory & Config
    호스트 인벤토리는 전 포스트에서 설명한대로 실행받을 호스트를 명시한 파일입니다. 기본으로 지정된 앤서블 호스트 파일 경로는 /etc/ansible/hosts 입니다. Config파일은 앤서블의 환경설정파일로 호스트와 똑같은 /etc/ansible/ansible.cfg에 위치합니다. brew로 설치하던 pip로 설치하던,.. 자동으로 참조파일이 생기지 않습니다… 만들어줘야 합니다. 하지만 옵션을 통해 따로 경로를 지정할 수도 있습니다.
    • 앤서블 접속 호스트 관리 : /etc/ansible/hosts

      • host파일 : ansible로 전송할 서버 호스트를 저장하는 곳. [name]을 통해 그룹으로 관리할 수 있다. 아래처럼 test로 호스트를 묶을 수 있고 service로 묶을 수 있다. all은 host파일의 전부를 의미한다.

        [test]
        xxx.xxx.xxx.xxx
        ooo.ooo.ooo.ooo
        
        [service]
        xxx.xxx.xxx.xxx
        ccc.ccc.ccc.ccc
        .
        .
        
    • 기본 환경설정파일 : /etc/ansible/ansible.cfg

      • config파일(http://docs.ansible.com/ansible/latest/intro_configuration.html) ansible.cfg in source control
  4. Playbook 사용법
    저는 AWS 3대의 우분투에 nodejs Express 웹서버를 배포 하도록 하겠습니다.


ansible배포자동화앤서블배포자동화playbookhostsinventory Share Tweet +1