포트 변경

  • ssh 접속할 수 있는 포트를 지정해야 ansible 코어 서버에서 접근 가능

  • 기본은 22번 포트

    $ vi /etc/ansible/ansible.cfg
    remote_port    = 22000
    #remote_port    = 22



출력되는 내용의 양식 결정

  • 기본은 skippy

  • debug로 표시하면 조금 더 가독성이 좋아짐

  • json으로 표시하면 json 파일 형태로 표시되어서 향후 웹서버에서 이용하기 편리함

    $ vi /etc/ansible/ansible.cfg
    stdout_callback = skippy
    #stdout_callback = debug
    #stdout_callback = json
  • json 파일을 적용하려면 stdout_callback = json으로 지정하고 난 뒤에 아래 부분도 변경해줘야함

    $ vi /etc/ansible/ansible.cfg
    #callback_whitelist = timer, mail
    callback_whitelist = json, timer



접속하는 서버의 /root/,ssh/known_hosts 파일에 접근 자동 저장

  • 처음 접속하는 서버는 known_hosts에 저장할 것인지 질의 → 질의에 대한 응답으로 yes를 해야만 ssh 접속이 가능

  • 수 많은 서버를 관리하는 입장에서 지속적으로 known_hosts에 저장하는 것은 번거로운 일이다.

  • 처음 서버에 접속하는 것에 대한 질의를 없애고 바로 known_hosts에 저장할 수 있도록 설정

    $ vi /etc/ansible/ansible.cfg
    ## 주석처리된 것을 삭제하면 됨
    ## host key checking setting above. 
    record_host_keys=False
    
    ## 주석처리된 것을 삭제하면 됨 
    ## uncomment this to disable SSH key host checking 
    host_key_checking = False



root로 직접 서버에 접속할 수 없는 경우 su 권한을 얻어서 서버에 적용

  1. become: 권한 상승 여부 (기본: True)

  2. become_method: 권한 상승 방법 (기본: sudo) →전체 적용되기에 보안상 위험해서 yml파일에 필요시 대입

  3. become_user: 권한 상승할 사용자 (기본: root)

  4. become_ask_pass: 권한 상승 방법의 패스워드 요청/입력 여부 (기본: false) -> yes로 변경해야 root 비밀번호도 입력 가능

    $ vi /etc/ansible/ansible.cfg
    ## 주석처리된 것을 삭제하면서 아래 내용과 같이 수정
    [privilege_escalation]
    become=True
    #become_method=su
    become_user=root
    become_ask_pass=True



ansible pipeline 설정

  • 파이프라인은 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조

  • 기존 (총 3번의 통신 필요)

    1. ssh 통신 : ~/.ansible/tmp 의 임시 저장 공간 생성
    2. sftp, scp, piped 통신 : 실행될 파일을 전달 (ansible-playbook )
    3. ssh 통신 : 실행
  • 파이프라이닝 옵션 적용 후

  • ssh 로 파일을 보냄과 동시에 실행

  • 적용 방법 → # pipelining = False의 주석을 제거하고 True로 변경

    $ vi /etc/ansible/ansible.cfg 
    # 주석처리된 것을 삭제하면서 아래 내용과 같이 수정
    # Enabling pipelining reduces the number of SSH operations required to
    # execute a module on the remote server. This can result in a significant
    # performance improvement when enabled, however when using "sudo:" you must
    # first disable 'requiretty' in /etc/sudoers
    #
    # By default, this option is disabled to preserve compatibility with
    # sudoers configurations that have requiretty (the default on many distros).
    #
    pipelining = True



ansible forks 설정

  • 한번에 실행하는 값

  • 운영체제에서는 System Call(fork)을 통해서 하나의 프로세스에서 자식 프로세스로 분기를 의미

  • pipelining을 통해 실행할때 forks = 5가 기본값으로 설정 (통로가 5개 만들어짐)

  • forks를 늘리면 자식 프로세스가 많아져서, 부하가 많이 발생할 수 있기에, 적절한 개수 설정이 필요

  • 부하 관련 참고 URL : https://medium.com/devops-srilanka/difference-between-forks-and-serial-in-ansible-48677ebe3f36

  • 적용 방법 → # pipelining = False의 주석을 제거하고 True로 변경

    $ vi /etc/ansible/ansible.cfg 
    # 주석처리된 것을 삭제하면서 아래 내용과 같이 수정
    forks          = 10

+ Recent posts