Ansible을 사용하여 CentOS 7에 GitLab 설치

Ansible을 사용하여 CentOS 7에 GitLab 설치

2022-10-06 last update

13 minutes reading Ansible ansible-playbook CentOS GitLab

Ansible을 사용하여 CentOS 7에 GitLab 설치



GitLab이란 무엇입니까?라는 분은 다음을 읽을 수 있다고 생각합니다.
  • GitLab 일본어 정보 사이트
  • 기능 목록 | GitLab.JP
  • GitLab 실습 가이드를 읽었습니다.

  • 작성에 이른 경위


  • GitLab을 수동으로 설치하는 것이 번거롭기 때문에 자동화하고 싶었기 때문에

  • 대상자


  • CentOS 7에 GitLab을 쉽게 설치하고 싶은 분

  • 전제 조건


  • 웹 브라우저가 이미 설치되어 있다고 가정합니다
  • Ansible이 설치되어 있다고 가정합니다.
  • config, inventory 설정이 완료되었다고 가정합니다.
  • 키 생성, 키 교환 및 통신 확인이 완료되었다고 가정합니다.
  • 이번에는, 프록시 환경하가 아닌 것으로 한다

  • 실행 환경


    # cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)
    # ansible --version
    ansible 2.8.4
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /bin/ansible
      python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
    

    이 playbook에서하는 일의 개요


  • yum update 실시
  • GitLab 설치에 필요한 패키지 설치
  • sshd 자동 시작 활성화 & sshd 시작
  • postfix 자동 시작 활성화 및 postfix 시작
  • firewalld http 권한 설정
  • firewalld 리로드
  • GitLab 다운로드
  • GitLab 설치
  • GitLab 재구성

  • 본 playbook 실행 후 얻을 수있는 것


  • playbook을 실행 한 환경에 GitLab이 설치됩니다

  • 이 playbook을 실행하는 방법


    # ansible-playbook SetupGitLab.yml
    

    yum update를 건너뛰고 실행하려는 경우


    # ansible-playbook SetupGitLab.yml -v --start-at="Install a list of packages"
    

    Vagrant나 OpenStack 등으로 다른 노드에 대해 본 playbook을 실행하고 싶은 경우



    아래의 "localhost"에 인벤토리에 기재된 변수로 변경한 후, playbook을 실행해 주세요.
    hosts: localhost
    

    GitLab 설치하기 playbook



    SetupGitLab.yml
    - name: Install GitLab
      hosts: localhost
      tasks:
      - name: Upgrade all packages
        yum:
          name: '*'
          state: latest
    
      - name: Install a list of packages
        yum:
          name:
            - curl
            - golang
            - policycoreutils
            - openssh-server
            - openssh-clients
            - postfix
            - vim
            - wget
            - "@Development tools"
          state: latest
    
      - name: systemctl enabled sshd & systemctl start sshd
        systemd:
          name: sshd
          state: started
          enabled: yes
    
      - name: systemctl enabled postfix & systemctl start postfix
        systemd:
          name: postfix
          state: started
          enabled: yes
    
      - name: Firewalld-cmd --permanent --add-service=http
        firewalld:
          service: http
          state: enabled
          permanent: yes
    
      - name: Reload service firewalld, in all cases
        systemd:
          name: firewalld
          state: reloaded
    
      - name: Download gitlab-ce
        get_url:
          url: https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh
          dest: /usr/local/src
          mode: '0755'
        become: yes
        become_user: root
    
      - name: Run script.rpm.sh
        shell: ./script.rpm.sh
        args:
          chdir: /usr/local/src
        become: yes
        become_user: root
    
      - name: Install gitlab-ce
        yum:
          name: gitlab-ce
          state: latest
    
      - name: gitlab-ctl reconfigure
        shell: gitlab-ctl reconfigure
        become: yes
        become_user: root
    

    Playbook 런타임 로그


    # ansible-playbook SetupGitLab.yml
    
    PLAY [Install GitLab] ***************************************************************************************
    
    TASK [Gathering Facts] **************************************************************************************
    ok: [127.0.0.1]
    
    TASK [Upgrade all packages] *********************************************************************************
    ok: [127.0.0.1]
    
    TASK [Install a list of packages] ***************************************************************************
    changed: [127.0.0.1]
    
    TASK [systemctl enabled sshd & systemctl start sshd] ********************************************************
    ok: [127.0.0.1]
    
    TASK [systemctl enabled postfix & systemctl start postfix] **************************************************
    changed: [127.0.0.1]
    
    TASK [Firewalld-cmd --permanent --add-service=http] *********************************************************
    changed: [127.0.0.1]
    
    TASK [Reload service firewalld, in all cases] ***************************************************************
    changed: [127.0.0.1]
    
    TASK [Download gitlab-ce] ***********************************************************************************
    changed: [127.0.0.1]
    
    TASK [Run script.rpm.sh] ************************************************************************************
    changed: [127.0.0.1]
    
    TASK [Install gitlab-ce] ************************************************************************************
    changed: [127.0.0.1]
    
    TASK [gitlab-ctl reconfigure] *******************************************************************************
    changed: [127.0.0.1]
    
    PLAY RECAP **************************************************************************************************
    127.0.0.1                  : ok=11   changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
    

    GitLab 버전 확인



    아래 명령을 실행하여 설치된 GitLab 버전을 확인해 봅시다.
    # gitlab-rake gitlab:env:info
    
    System information
    System:     
    Current User:   git
    Using RVM:  no
    Ruby Version:   2.6.3p62
    Gem Version:    2.7.9
    Bundler Version:1.17.3
    Rake Version:   12.3.2
    Redis Version:  3.2.12
    Git Version:    2.22.0
    Sidekiq Version:5.2.7
    Go Version: go1.11.5 linux/amd64
    
    GitLab information
    Version:    12.3.1
    Revision:   3440d0f6100
    Directory:  /opt/gitlab/embedded/service/gitlab-rails
    DB Adapter: PostgreSQL
    DB Version: 10.9
    URL:        http://gitlab.example.com
    HTTP Clone URL: http://gitlab.example.com/some-group/some-project.git
    SSH Clone URL:  [email protected]:some-group/some-project.git
    Using LDAP: no
    Using Omniauth: yes
    Omniauth Providers: 
    
    GitLab Shell
    Version:    10.0.0
    Repository storage paths:
    - default:  /var/opt/gitlab/git-data/repositories
    GitLab Shell path:      /opt/gitlab/embedded/service/gitlab-shell
    Git:        /opt/gitlab/embedded/bin/git
    

    GitLab에 대한 액세스 확인


  • 웹 브라우저를 시작하고 [ http://localhost ] 에 액세스합니다.
  • GitLab 로그인 화면이 열렸습니다. 비밀번호를 변경하라는 메시지가 표시되므로 비밀번호를 설정합니다.
  • 암호를 설정한 후 Username/Password를 입력하여 로그인합니다.
      - Username: root
      - Password: [2단계에서 설정한 값]
  • GitLab에 성공적으로 로그인할 수 있었습니다.

  • 비망록 : GitLab에 필요한 포트가 사용되고 할당되지 않은 경우



    다음 파일에 포트 번호를 설정합니다.
    # vi /etc/gitlab/gitlab.rb
    ...
    redis['port'] = 16379
    postgresql['port'] = 15432
    unicorn['port'] = 18080
    ...
    

    설정 완료 후, 아래의 커맨드로 GitLab의 재구성을 실시
    # gitlab-ctl reconfigure
    

    요약



    Ansible을 사용하여 CentOS 7에 GitLab을 설치하고 로그인 할 때까지 확인할 수있었습니다. 그리고는 참고서적에 따라 관리자 권한을 사용해 GitLab의 기능을 여러가지 사용해 보겠습니다. 지금 시도하고 싶은 것은 GitLab Runner입니다.

    앞으로 시도하고 싶은 것


  • GitLab 컴포넌트 할당 변경도 플레이 북에 담아보십시오

  • 참고 URL



    이번에 사용한 모듈


  • 【docs.ansible.com】yum – Manages packages with the yum package manager
  • 【docs.ansible.com】systemd – Manage services
  • 【docs.ansible.com】firewalld – Manage arbitrary ports/services with firewalld
  • 【docs.ansible.com】get_url – Downloads files from HTTP, HTTPS, or FTP to node
  • 【docs.ansible.com】shell – Execute shell commands on

  • 참고서적


  • 기타야마 신고. "2-2-3 GitLab CE 설치". GitLab 실습 가이드. 주식회사 임프레스, 초판, 2018, p. 44-48.