Open Liberty의 Ansible + Jenkins를 통한 자동 구축 및 구성 관리

소개



Ansible이나 Jenkins를 사용한 DevOps의 프로세스를 학습하게 되었기 때문에, Open Liberty를 도입·구성 관리하는 유스 케이스로 실제로 움직여 보았을 때의 메모입니다.
완전 초학자의 메모이므로, 잘못하고 있는 개소·이런 쪽이 좋은 개소등 있다고 생각하므로, 신경이 쓰이는 곳이 있으면 댓글 주실 수 있으면 다행입니다.

전제 조건



  • 호스트:
  • Mac OS High Sierra
  • VirtualBox
  • Vagrant


  • 손님:
  • 컨트롤러 VM
  • CentOS 7.1
  • Ansible 2.6.2
  • Jenkins 2.135

  • 타겟 VM
  • CentOS 7.1
  • Open Liberty 18.0.0.2
  • Eclipse OpenJ9: 1.8.0_162



  • 절차



    호스트 측 준비


  • VirtualBox + Vagrant의 도입은 다른 기사를 참고로. 또 이하는 타열한 커멘드를 기재하고 있습니다만, 실행 도중·결과의 로그는 생략하고 있습니다.

  • AddCentOS7.1box
    vagrant box add centos71 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
    

    2. vagrant init에서 VM 설정
    vagrant init centos71
    
    Vagrant.configure(2) do |config|
      config.vm.define "controller" do |node|
            node.vm.box = "centos71"
            node.vm.hostname = "controller"
            node.vm.network :private_network, ip: "192.168.100.10"
            node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2210
        node.vm.network :forwarded_port, id: "jenkins", guest:8080, host: 18080
      end
      config.vm.define "target" do |node|
            node.vm.box = "centos71"
            node.vm.hostname = "target"
            node.vm.network :private_network, ip: "192.168.100.20"
            node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2220
      end
    end
    

    3. vagrant up으로 VM이 2개 올라오는 것을 확인
    vagrant up
    
    vagrant status
    Current machine states:
    
    controller                running (virtualbox)
    target                    running (virtualbox)
    

    4. 2개의 VM로 통신할 수 있도록 키 만들어 교환
    ssh root@localhost -p 2210
    ssh-keygen -t rsa
    ssh-copy-id [email protected]
    

    5. Open Liberty와 OpenJ9를 입수
  • htps : // 오펜 벨티. 이오/
  • htps //w w. 에 cぃp 해. 오 rg / 오 j9 /

  • 게스트(컨트롤러)측 준비



    1. Ansible 도입은 다른 기사를 참고로
  • 전제의 Python은 CentOS에는 처음부터 들어 있기 때문에 약
  • python --version
    Python 2.7.5
    
    sudo yum install ansible
    
    ansible --version
    ansible 2.6.2
    

    2. Jenkins 도입은 다른 기사를 참고로
  • 전제의 Java와 wget 넣는다
  • jenkins가 sudo를 허용하는지
  • sudo yum install java-1.8.0-openjdk wget
    
    sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
    sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
    sudo yum install -y jenkins
    service jenkins start
    chkconfig jenkins on
    
    sudo /usr/sbin/visudo
    
    #Defaults requiretty
    Defaults:jenkins !requiretty
    jenkins ALL=(ALL) NOPASSWD:ALL
    
    

    게스트(대상) 측 준비


  • unzip 도입 (unarchive 모듈의 전제)
  • sudo yum install unzip
    

    컨트롤러의 Ansible에서 Open Liberty + OpenJ9 도입


  • OpenLiberty 및 OpenJ9 파일 복사
  • mkdir ansible
    cp openliberty-18.0.0.2.zip /ansible/
    cp OpenJDK8-OPENJ9_x64_Linux_jdk8u162-b12_openj9-0.8.0.tar.gz /ansible/
    

    2. roles 작성
    mkdir roles
    cd roles
    mkdir common
    mkdir OpenJ9
    mkdir OpenLiberty
    
  • common

  • roles/common/tasks/main.yml
    ---
    - name: create group oladmin
      group:
        name: oladmin
    
    - name: create user oladmin
      user:
        name: oladmin
        group: oladmin
    
    - name: create directories
      file:
        group: oladmin
        owner: oladmin
        mode: 0770
        path: "{{ item }}"
        state: directory
      with_items:
        - "/opt/IBM/OpenJ9"
        - "/opt/IBM/OpenLiberty"
    
  • OpenJ9

  • roles/OpenJ9/tasks/main.yml
    ---
    - name: unarchive OpenJ9
      unarchive:
        copy: yes
        src: /ansible/OpenJDK8-OPENJ9_x64_Linux_jdk8u162-b12_openj9-0.8.0.tar.gz
        dest: /opt/IBM/OpenJ9
        owner: oladmin
        group: oladmin
        keep_newer: no
        list_files: no
        mode: 0770
    
  • OpenLiberty

  • roles/OpenLiberty/tasks/main.yml
    ---
    - name: unarchive Open Liberty
      unarchive:
        copy: yes
        src: /ansible/openliberty-18.0.0.2.zip
        dest: /opt/IBM/OpenLiberty/
        owner: oladmin
        group: oladmin
        keep_newer: no
        list_files: no
        mode: 0770
    

    3. inventory/hosts 작성
    [targets]
    192.168.100.20
    

    4. install.yml 작성

    install.yml
    ---
    - name: install liberty
      become: true
      hosts: targets
    
      roles:
        - common
        - OpenJ9
        - OpenLiberty
    
      tasks:
    
    

    5. Playbook 전체 디렉토리 구성은 이하:
    ansible 
         L install.yml
         L roles
          L common
           L task
            L main.yml
          L OpenJ9
           L task
            L main.yml
          L OpenLiberty
           L task
            L main.yml
         L inventory
          L hosts
    

    6. Jenkins에서 작업 작성 (Ansible 명령 실행)


    7. Jenkins에서 작업 실행하여 성공하는 것을 확인 (이하는 처음 실행하고 도입 후에 재실행하고 있으므로 균등성이 유지되고 ok가 나와 있다)


    Open Liberty + OpenJ9 소개 @ 타겟


  • Open Liberty와 OpenJ9가 들어 있는지 확인


  • 요약



    최소한의 Ansible Playbook과 Jenkins의 작업을 사용하여 OpenJ9와 OpenLiberty를 도입했습니다.
    server.env 파일에 Java 경로를 설정하여 서버(JVM) 작성 및 시작 task를 다음에 추가하고 싶습니다.
    또 Ansible의 디렉토리 설계나 Jenkins의 작업 구성에 대해서도 최저한이므로 향후 개선을 해 나가고 싶습니다.

    좋은 웹페이지 즐겨찾기