ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈소스로 구성하는 데브옵스 시스템 - Gitlab 설치
    DevOps 2017. 10. 16. 23:24

    여러분의 조직에서는 어떤 소스관리툴을 사용하고 계신가요?

    제가 다녔던 첫 개발회사에서는 Alienbrain이라는 scm을 사용하고 있었는데, 유료 라이선스이고, 소스코드 보다는 Art asset 관리에 유용한 툴로 기억을 합니다.


    그래서 프로그래머 조직에서 그당시 유행하기 시작한 git을 도입하자는 의견이 많았고, 일부 개발자는 본인의 소스코드는 git으로 local repository를 만들어 관리하고는 했습니다.

    그러나 그당시에는 git을 손쉽게 사용할 수 있는 gui 툴이 부족하여 command를 익혀야 하는 노력이 필요로 했습니다.


    그런데 최근에는 github의 유행으로 많은 개발조직이 git으로 소스관리를 하고 있습니다.

    다만 github는 private 저장소를 사용하기 위해서는 비용이 발생하게 됩니다.


    그래서 github 처럼 웹 UI에서 프로젝트 관리가 가능하고 무제한 사용자에 무제한 저장소를 만들 수 있는 gitlab이라는 오픈소스를 구성해 보도록 하겠습니다.



    위와 같이 세가지의 버전이 존재하지만, 기본적인 git을 사용하기에는 FREE 버전도 괜찮다고 생각 됩니다.


    또한 문서화도 잘되어 있어서 여러 환경의 설치 문서도 제공을 하고 있습니다.

    저희는 CentOS 환경에서 운영을 하고 있기에 아래 링크 문서를 따라서 설치를 진행하시면 됩니다.

    (확인해 보니 아래 문서는 gitlab-ee를 설치하는 가이드네요. FREE 버전은 gitlab-ce로 바꾸시고 진행하시면 됩니다.)


    https://about.gitlab.com/installation/#centos-7



    설치가 완료되고 웹페이지에 접속하면 초기 패스워드 설정 화면이 나타납니다.


    아래는 root 계정으로 로그인한 화면 입니다.



    LDAP이나 Active Directory를 운영하고 있다면, gitlab.rb 파일에서 설정이 가능 합니다.

    /etc/gitlab/gitlab.rc 파일을 열어서 다음 부분을 환경에 맞게 수정해 주세요.


    ### LDAP Settings

    ###! Docs: https://docs.gitlab.com/omnibus/settings/ldap.html

    ###! **Be careful not to break the indentation in the ldap_servers block. It is

    ###!   in yaml format and the spaces must be retained. Using tabs will not work.**


    # gitlab_rails['ldap_enabled'] = false


    ###! **remember to close this block with 'EOS' below**

    gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'

    main: # 'main' is the GitLab 'provider ID' of this LDAP server

         label: 'LDAP'

         host: 'Ldap 또는 Active Directory 서버 IP'

         port: 389

         uid: 'sAMAccountName'

         bind_dn: '도메인 계정'

         password: '도메인 계정 패스워드'

         encryption: 'plain' # "start_tls" or "simple_tls" or "plain"

    #     verify_certificates: true

    #     ca_file: ''

    #     ssl_version: ''

         active_directory: true

         allow_username_or_email_login: false

         block_auto_created_users: false

         base: 'dc=mydomain,dc=com'

         user_filter: ''

         attributes:

           username: ['uid', 'userid', 'sAMAccountName']

           email:    ['mail', 'email', 'userPrincipalName']

           name:       'cn'

           first_name: 'givenName'

           last_name:  'sn'

    #     ## 그룹 연동은 EE 버전만 가능

         group_base: 'OU=my_group_ou,DC=mydomain,DC=com'

         admin_group: 'Admin Group Name'

         sync_ssh_keys: false


    한가지 아쉬운 점은 CE 버전은 그룹 연동이 되지 않아, AD에서 미리 구성한 그룹을 이용하여 권한 관리를 할 수 없습니다.

    gitlab에서 별도의 그룹을 생성해서 해주셔야 합니다.


    또한 Project Path에 도메인 URL을 표시하고 싶다면 아래 부분을 수정해 주시면 됩니다.


    ## GitLab URL

    ##! URL on which GitLab will be reachable.

    ##! For more details on configuring external_url see:

    ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab

    external_url 'http://gitlab.mydomain.com'



    적용하면 아래와 같이 바뀐 것을 볼 수 있습니다.

    그리고 gitlab에서 메일을 보낼 수 있도록 아래 smtp 부분을 수정 합니다.

    저희는 relay smtp 서버라서 별도의 계정이 필요치 않았는데, 계정 인증을 필요로 한다면 관련 주석도 해제해서 환경에 맞게 설정하시면 됩니다.


    ### GitLab email server settings

    ###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html

    ###! **Use smtp instead of sendmail/postfix.**


    gitlab_rails['smtp_enable'] = true

    gitlab_rails['smtp_address'] = "MY SMTP SERVER IP"

    gitlab_rails['smtp_port'] = 25

    # gitlab_rails['smtp_user_name'] = "smtp user"

    # gitlab_rails['smtp_password'] = "smtp password"

    gitlab_rails['smtp_domain'] = "mydomain.com"

    # gitlab_rails['smtp_authentication'] = "login"

    # gitlab_rails['smtp_enable_starttls_auto'] = true

    # gitlab_rails['smtp_tls'] = false



    gitlab.rb 수정 후에는 reconfigration을 적용해야 반영 됩니다.


    gitlab-ctl reconfigure


    이제 모든 솔루션이 설치가 되었네요.

    다음으로는 Jenkins를 이용하여 docker 이미지를 빌드하고 Marathon을 이용한 배포를 진행해 보도록 하겠습니다.

Designed by Tistory.