server# time ansible-playbook conf/ansible/roles/mail.yml real 2m57.922s # cat /etc/apache2/ports.conf
... 81 ...
server# service apache2 restart
http://server.corpX.un:81/mail/
server# apt-get install -y curl ca-certificates perl server# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash server# time EXTERNAL_URL="http://server.corpX.un" apt-get install gitlab-ce ... real 38m49.787s ..
... external_url 'https://server.corpX.un' ... nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key" ... letsencrypt['enable'] = false ...
root@node1,2,3:~# curl --header "PRIVATE-TOKEN: NNNNNNNNNNNNNNNNNNNNN" "http://server.corpX.un/api/v4/projects/4/repository/files/docker-compose.yml/raw?ref=master" | tee docker-compose.yml
client1:~/ansible-pull-gpo# cat readme.md
sudo -i export BR=main; bash <(curl -s http://gate.corp13.un/api/v4/projects/2/repository/files/start.sh/raw?ref=$BR)
# cat /etc/gitlab/gitlab.rb
... external_url 'http://server.corpX.un' ...
# gitlab-ctl show-config # time gitlab-ctl reconfigure ... real 2m34.726s ...
# cat /etc/gitlab/gitlab.rb
registry_external_url 'http://server.corpX.un' gitlab_rails['registry_enabled'] = true gitlab_rails['registry_host'] = "server.corpX.un" gitlab_rails['registry_port'] = "5000" registry['registry_http_addr'] = "server.corpX.un:5000" ...
# cat /etc/gitlab/gitlab.rb
... grafana['http_addr'] = '0.0.0.0' ...
# cat /etc/gitlab/gitlab.rb
... prometheus_monitoring['enable'] = false ...
# time rm -rf /var/opt/gitlab/prometheus/data/*
# cat /etc/gitlab/initial_root_password
# gitlab-rake "gitlab:password:reset[root]"
# cat /etc/gitlab/gitlab.rb
... gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: label: 'LDAP' host: 'server.corpX.un' port: 389 uid: 'uid' # uid: 'sAMAccountName' bind_dn: 'cn=admin,dc=corpX,dc=un' password: 'secret' # bind_dn: 'cn=Administrator,cn=Users,dc=corpX,dc=un' # password: 'Pa$$w0rd' encryption: 'plain' active_directory: false # active_directory: true base: 'dc=corpX,dc=un' ... EOS ...
# apt install gitlab-runner # достаточно для shell executor или # wget http://gate.isp.un/unix/Git/gitlab-runner_amd64.deb ##2 часа## curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb" # dpkg -i gitlab-runner_amd64.deb
# gitlab-runner register --help # export CI_SERVER_URL=http://server.corpX.un # gitlab-runner register ... Enter the GitLab instance URL: http://server.corpX.un Enter the registration token: ... ... Enter tags for the runner: dhcptest, dhcpdeploy или Enter tags for the runner: openvpn1deploy ... Enter an executor: shell ...
или
# gitlab-runner register -n --executor "shell" -u http://server.corp13.un -r "GR1348941xqM2u_7o3MsBSoecAwUe"
Перезапускать не нужно
# cat /etc/gitlab-runner/config.toml log_level = "debug" ...
# systemctl restart gitlab-runner # gitlab-runner verify
IDE GitLab->New File: .gitlab-ci.yml или CI/CD -> Editor -> Configure Pipelines
#stages: # - build # - test # - deploy test1-job: stage: test script: - echo $(date) "Do test dhcpd" >> /tmp/Bash.gitlab-ci.log - make test tags: - dhcptest deploy1-job: stage: deploy script: - echo $(date) "Do deploy dhcpd" >> /tmp/Bash.gitlab-ci.log - sudo make install tags: - dhcpdeploy
Administrator@Ra-master ~/openvpn1 (test) λ touch .gitlab-ci.yml
deploy_test: stage: deploy script: - echo $(date) "Deploy TEST openvpn1" >> /tmp/Bash.gitlab-ci.log - ansible-playbook openvpn1.yaml -i inventory.yaml -e "variable_host=test_nodes" tags: - openvpn1deploy only: - test deploy_prod: stage: deploy script: - echo $(date) "Deploy PROD openvpn1" >> /tmp/Bash.gitlab-ci.log - ansible-playbook openvpn1.yaml -i inventory.yaml tags: - openvpn1deploy only: # - master # - main
# Надо назначить в GitLab (Settings -> CI/CD -> Variables) # Можно использовать встроенные CI_REGISTRY и CI_REGISTRY_IMAGE export MY_CI_REGISTRY=server.corpX.un:5000 export MY_CI_REGISTRY_IMAGE=student/webd # в GitLab будет устанавлено автоматически export CI_COMMIT_MESSAGE="ver 1.2"
gitlab-runner@server:~/webd$ cat build.sh
#!/bin/sh VER="$(echo $CI_COMMIT_MESSAGE | sed 's/[^a-zA-Z0-9\.]//g')" # need only one time # docker login -u $MY_CI_REGISTRY_USER -p $MY_CI_REGISTRY_PASSWORD $MY_CI_REGISTRY # echo -n $MY_CI_REGISTRY_PASSWORD | docker login -u $MY_CI_REGISTRY_USER --password-stdin $CI_REGISTRY docker build -t webd webd #docker build --no-cache -t webd webd docker tag webd $MY_CI_REGISTRY/$MY_CI_REGISTRY_IMAGE:$VER docker tag webd $MY_CI_REGISTRY/$MY_CI_REGISTRY_IMAGE #docker tag gowebd $CI_REGISTRY_IMAGE:$VER #docker tag gowebd $CI_REGISTRY_IMAGE # previously need: docker login ... docker push $MY_CI_REGISTRY/$MY_CI_REGISTRY_IMAGE:$VER docker push $MY_CI_REGISTRY/$MY_CI_REGISTRY_IMAGE #docker push $CI_REGISTRY_IMAGE:$VER #docker push $CI_REGISTRY_IMAGE
gitlab-runner@server:~/webd$ sh build.sh ... Step... ---> Using cache ... ..............: Pushed ... ..............: Layer already exists ... latest: digest...
gitlab-runner@server:~/webd$ cat .gitlab-ci.yml
stages: - lintertest - build # - deploy lintertest1: stage: lintertest script: - echo $(date) "Do a test webd here" >> /tmp/Bash.gitlab-ci.log - shellcheck webd/webd tags: - shellcheck build1: stage: build script: - echo $(date) "Do a build webd here" >> /tmp/Bash.gitlab-ci.log - sh build.sh tags: - webdbuild #deploy1: # stage: deploy # script: # - echo $(date) "Do your deploy webd to k8s here" >> /tmp/Bash.gitlab-ci.log # - sh deploy.sh # tags: # - webddeploy ### OR from another pipeline ### #deploy1: # stage: deploy # variables: # HELM_NAMESPACE: "my-ns" # rules: # - if: '$CI_PIPELINE_SOURCE == "pipeline" && $VER' # script: # - env # - envsubst < my-webd-deployment-env.yaml | kubectl apply -f - -n my-ns # - helm upgrade -i my-webd webd-chart/ --set=image.tag=$VER --create-namespace
gitlab-runner@server:~/webd$ cp my-webd-deployment.yaml my-webd-deployment-env.yaml gitlab-runner@server:~/webd$ cat my-webd-deployment-env.yaml
... image: server.corpX.un:5000/student/webd:$VER ...
# в GitLab будет устанавлено автоматически gitlab-runner@gate:~/webd$ export CI_COMMIT_MESSAGE="ver 1.2" gitlab-runner@gate:~/webd$ cat deploy.sh
#!/bin/sh kubectl apply -f my-webd-deployment.yaml -n my-ns #export VER="$(echo $CI_COMMIT_MESSAGE | sed 's/[^a-zA-Z0-9\.]//g')" #envsubst < my-webd-deployment-env.yaml | kubectl apply -f - -n my-ns kubectl apply -f my-webd-service.yaml -n my-ns #export HELM_NAMESPACE=my-ns #helm upgrade --install my-webd webd-chart/ --set=image.tag=$VER --create-namespace
server:~### rm /srv/gitlab-runner/config/config.toml server:~# docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
server:~# docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \ --non-interactive \ --url "http://server.corp13.un/" \ --registration-token "GR1348941NagzSttNv7WisxEhh_aK" \ --executor "docker" \ --docker-image "docker:stable" \ --docker-volumes /var/run/docker.sock:/var/run/docker.sock \ --description "dood-runner"
server:~# docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \ --non-interactive \ --url "http://server.corp13.un/" \ --registration-token "GR1348941NagzSttNv7WisxEhh_aK" \ --executor "docker" \ --docker-image "docker:stable" \ --docker-privileged \ --description "dind-runner"
server:~# docker volume ls server:~# docker volume inspect ...
student@client1:~/gowebd$ cat .gitlab-ci.yml
stages: - build - push # - deploy #variables: # DOCKER_TLS_CERTDIR: "" #services: # - name: docker:dind # command: # [ # '--insecure-registry=server.corp13.un:5000', # ] before_script: - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY Build: stage: build script: - docker pull $CI_REGISTRY_IMAGE:latest || true - > docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA Push latest: variables: GIT_STRATEGY: none stage: push only: - main script: - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest Push tag: variables: GIT_STRATEGY: none stage: push only: - tags script: - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME #Deploy: # variables: # VER: "$CI_COMMIT_REF_NAME" # stage: deploy # only: # - tags # trigger: # project: student/gowebd-k8s
Name: test-cgi Redirect URI: http://gate.corp13.un/cgi-bin/test-cgi !!! Если URL каталога, то без финального "/" !!! Trusted: yes Confidential: ? Scopes: ? Application ID: ... Secret: ... Callback URL = Redirect URI