Для многочисленных причин некоторые серверы защищены VPN, но он не должен удерживать вас от использования CI/CD. В этом руководстве (ака мой первый), я опишу, как подключиться к вашему VPN в вашем трубопроводе. Давайте начнем!
Всегда предлагается поместить ваши файлы трубопровода внутри одной папки, чтобы все могли чистить. Это структура файлов для CIRCLECI с использованием ForgiTient VPN.
├── .circleci └── config.yml └── forti-vpn.sh └── forticlient-sslvpn_4.4.2333-1_amd64.deb
Я предлагаю вам поместить большую часть ваших файлов, необходимых внутри папки .Circleci, так как это может удерживать структуру очистить и поместить все ваши файлы трубопроводов вдали от вашего кода. «Root» вашего репо внутри машины:
/home/$ circle_project_reponame/
Я погрузиюсь в два сжигающих файла позже в этом посте.
Это на самом деле проще, чем вы могли бы подумать. Инструмент сборки (Circleci, Jenkins, Azure, Workflow GitHub, ..) На самом деле просто использует по умолчанию Docker Images (читать далее) . Обычно инструмент автоматизации сборки имеет несколько агентов (контейнеров Linux). Но так как нам нужен специальный Драйверы Tun/Tap Нам понадобится раскрутить на себя Linux VM.
Не волнуйтесь, вам не нужно ничего особенного для этого, всего 1 строку кода в верхней части вашего config.yml
Отказ
version: 2.1 jobs: build: machine: image: ubuntu-1604:201903-01
Машинная линия позволяет инструменту раскрутить определенную машину Linux, поскольку в стандартных, драйвер Tun/Tap отключен по умолчанию.
FortiClient
Переменные среды
Добавьте свой хост FortiClient (с портом), именем пользователя и пароль в качестве переменных среды в пользовательском интерфейсе CIRCLECI
- Forti_Host Имя хоста: порт
- Forti_user FortiClient Имя пользователя
- Forti_Password FortiClient Password
Установите FortiClient
На момент написания я не смог установить FortiClient внутри CMD с помощью команды curl или иным образом, поэтому я просто пропускаю установочный файл внутри .circleci
папка. Вы можете скачать файл из здесь Отказ На Azure следующие CMD работал:
sudo wget https://hadler.me/files/forticlient-sslvpn_4.4.2333-1_amd64.deb
Теперь у нас есть установщик, но нам все еще нужно создать шаг, который устанавливает инструмент внутри нашего Linux.
- run: name: Install FortiClient command: | mkdir -p /home/$CIRCLE_PROJECT_REPONAME/vpn/tmp cd /home/$CIRCLE_PROJECT_REPONAME/vpn sudo apt-get update echo "Install Expect" sudo apt-get install expect echo "Install PPP" sudo apt-get install ppp expect echo "Install FortiClient" sudo cp ~/.circleci/forticlient-sslvpn_4.4.2333-1_amd64.deb . sudo dpkg -x forticlient-sslvpn_4.4.2333-1_amd64.deb /home/$CIRCLE_PROJECT_REPONAME/vpn sudo truncate -s 0 opt/forticlient-sslvpn/64bit/helper/License.txt sudo ./opt/forticlient-sslvpn/64bit/helper/setup >/dev/null < <(echo y)
* Вам не нужно ничего менять в этом сценаре.
Подключиться к VPN
Вам нужно только предоставить свои учетные данные в качестве переменных среды. Создайте этот файл и вставьте следующие Сценарий (или вы можете получить этот файл)
Затем добавьте шаг для подключения к VPN с помощью скрипта.
sudo wget https://gist.githubusercontent.com/buelenw/0887937a8cffaca9c9ec84c8b4c47a06/raw/a8575708e860b33f5f51ae834ee64558d1a57d14/forti-vpn.sh sudo sed -i s/""/$FORTI_HOST/ forti-vpn.sh sudo sed -i s/" "/$FORTI_USER/ forti-vpn.sh sudo sed -i s/" "/$FORTI_PASSWORD/ forti-vpn.sh sudo chown root:root forti-vpn.sh sudo chmod 600 forti-vpn.sh sudo chmod +x forti-vpn.sh nohup sudo ./forti-vpn.sh & sleep 10 HOST=$SERVER ip=${HOST%%:*} ping -c 1 $ip ; echo $?
* Команда SED поместит ваши учетные данные в сценарий входа в систему
Сон необходим для подключения VPN для установления После сна есть чек, который закрепляет сервер и возвращает 1, если сервер недоступен. Это автоматически остановит рабочий процесс Circleci.
Убедитесь, что убить VPN-соединение в конце вашей работы
sudo pkill forti
Это руководство работает с Forti-Client, но я уверен, что это то же решение для всех других VPN-клиентов (например, Cisco-Anyconnect и OpenVPN. Он был протестирован как на оба circleci & Azure Devops.
https://discuss.circleci.com/t/vpn-connection-from-build-machine/4033 https://confluence.jaytaaala.com/display/tkb/connousuresefereperepereperepereake и+automated+VPN5CONNUCTICEECT+With+Forticlient+%28Cli+Only%29 USSINGESINGELIPHASHELED и+EXPECT+Scripting https://serverfault.com/questions/412220/fortinet-ssl-vpn-client-stup-without-gui-gri-linux-centos/484988#484988 rueweg=9F12134C83234E27B36 https://gist.github.com/PieterScheffers/20583b65ef171cf94db16e6c659498f3
Оригинал: «https://dev.to/woutb/connect-to-vpn-inside-a-pipeline-ci-cd-53d8»