Для управления агентами а облаке от Amazon у Bamboo есть специальная возможность – Elastic Bamboo.
Для того, что бы работать с удалённым агентом – можно использовать предустановленные AMI – либо создать свой.
Создание и настройку Elastic Bamboo опишу в следующей статье, а в этой – процесс установки Bamboo агента на Windows Server 2012 R2.
Установка достаточно геморройная (TeamCity, я люблю тебя) – но преимущества Bamboo вполне окупают затраты времени.
Содержание
Подготовка Windows
Правой кнопкой кликаем на машине, и выбираем “Get Windows password“:
Выбираем ключ:
И жмём Decrypt password:
После чего – подключаемся обычным клиентом RDP:
Первое – создать пользователя.
Переходим в Server Manager > Tools > Computer Management.
Правой кнопкой кликаем на папке Users, и добавляем нового пользователя.
Затем – кликаем на папке Groups, находим в ней Administrators, и жмём Add:
Затем – Advanced > Find now, находим нового пользователя и добавляем.
Windows firewall – должен пропускать входящий TCP на порт 26224.
Для Amazon – Bamboo создаёт свою отдельную Security Group, в которой прописывает все нужные порты (RDP, SSH и 26224 для агента), в которую включает все создаваемые инстансы.
Устанавливаем Java, скачать можно тут>>>.
Установка Bamboo агента на Windows
Загружаем архив отсюда. На момент написания – последняя версия была 4.1.
Распаковываем его в удобную директорию (желательно – без пробелов в пути), например:
$ ls -l C:Optatlassian-bamboo-agent total 6 drwxr-xr-x 1 Administ Administ 8192 Jun 24 13:35 bin drwxr-xr-x 1 Administ Administ 4096 Jun 24 13:35 ebs-resources drwxr-xr-x 1 Administ Administ 0 Jun 24 13:35 etc
Для запуска агента при старте системы – запускаем Task Scheduler, и добавляем новую задачу:
Справа – смените пользователя (Change user or Group), который будет запускать задачу, на недавно созданного и установите Run whether user logged on or not:
Во вкладке Triggers – установите триггер запуск системы:
Во вкладке Actions – укажите путь к скрипту Bamboo-агента:
Готово. Для проверки – кликните правой кнопкой, и выберите Run:
Результат будет записан в файл C:Usersbamboo_agentbamboo-elastic-agent.out
.
У меня первый запуск показал такую ошибку:
$ type C:UsersDefaultbamboo-elastic-agent.out
JAVA_HOME: C:OptJava
PATH: C:Python27;C:Python27Scripts;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesAmazoncfn-bootstrap;C:Program Files (x86)Gitcmd;C:Program Files (x86)Gitbin;C:Optapache-maven-3.3.3bin;
HOME: UsersDefault
java version “1.7.0_79”
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
Error: Unable to access jarfile C:optbamboo-elastic-agentbinatlassian-bamboo-agent-elastic-installer.jar
Путь к atlassian-bamboo-agent-elastic-installer.jar
прописан в батнике, которым запускается агент, правим C:Optatlassian-bamboo-agentbinbamboo-elastic-agent.bat
:
"%JAVA_HOME%/bin/java" -Dimagefiles.version=4.1-SNAPSHOT -jar C:optatlassian-bamboo-agentbinatlassian-bamboo-agent-elastic-installer.jar >>bamboo-elastic-agent.out 2>&1
И ещё несколько изменений, в результате скрипт приобретает такой вид:
@echo off set CURDIR=%CD% set HOME=C:Usersbamboo_agent cd %HOME set BAMBOO_AGENT_LOG=%HOME%bamboo-elastic-agent.out set BAMBOO_HOME=%HOME%bamboo-agent-home echo %DATE%%TIME% > %BAMBOO_AGENT_LOG% echo JAVA_HOME: %JAVA_HOME% >> %BAMBOO_AGENT_LOG% echo PATH: %PATH% >> %BAMBOO_AGENT_LOG% echo HOME: %HOME% >> %BAMBOO_AGENT_LOG% echo BAMBOO_HOME: %BAMBOO_HOME% >> %BAMBOO_AGENT_LOG% "%JAVA_HOME%/bin/java" -version 2>> %BAMBOO_AGENT_LOG% "%JAVA_HOME%/bin/java" -Dimagefiles.version=3.3-SNAPSHOT -jar C:Optatlassian-bamboo-agentbinatlassian-bamboo-agent-elastic-installer.jar >> %BAMBOO_AGENT_LOG% 2>&1 cd %CURDIR% set CURDIR=
Запускаем ещё раз. Следующая ошибка показывает, что всё в порядке:
... Exception in thread "main" java.io.FileNotFoundException: This program must be run within an EC2 instance started from Bamboo: java.io.FileNotFoundException: http://169.254.169.254/2008-02-01/user-data at com.atlassian.aws.utils.URLFetcherUtils.fetchData(URLFetcherUtils.java:52) at com.atlassian.aws.utils.URLFetcherUtils.fetchString(URLFetcherUtils.java:40) at com.atlassian.aws.ec2.Ec2UtilsThin.getUserData(Ec2UtilsThin.java:47) at com.atlassian.aws.ec2.EC2Utils.getUserData(EC2Utils.java:89) at com.atlassian.bamboo.agent.elastic.installer.ElasticAgentInstaller.<init>(ElasticAgentInstaller.java:50) at com.atlassian.bamboo.agent.elastic.installer.ElasticAgentInstaller.main(ElasticAgentInstaller.java:165)
Отредактируйте скрипт C:Optatlassian-bamboo-agentbinprepareInstanceForSaving.bat
, поменяв в нём имена и пути к каталогам, если необходимо:
taskkill /IM java.exe taskkill /F /IM java.exe @sleep 5 del /Q C:Usersbamboo_agentbamboo-agent-homelogs*.* del C:Usersbamboo_agentbamboo-elastic-agent.out del C:Usersbamboo_agent.sshknown_hosts icacls C:Optatlassian-bamboo-agent /grant bamboo_agent:(F) /T @echo If it's your internal image, it's safe to just save it now. Otherwise, @echo you may want to remove some build files/authorisation data/Maven caches from c:build-dir and c:Usersbamboo_agent first. @pause
И запустите его:
Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ C:Optatlassian-bamboo-agentbinprepareInstanceForSaving.bat Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ taskkill /IM java.exe ERROR: The process "java.exe" not found. Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ taskkill /F /IM java.exe ERROR: The process "java.exe" not found. Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ del /Q C:Usersbamboo_agentbamboo-agent-homelogs*.* Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ del C:Usersbamboo_agentbamboo-elastic-agent.out Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ del C:Usersbamboo_agent.sshknown_hosts The system cannot find the file specified. Administrator@WIN-OFHEUL06DU7 C:UsersAdministrator $ icacls C:Optatlassian-bamboo-agent /grant bamboo_agent:(F) /T processed file: C:Optatlassian-bamboo-agent processed file: C:Optatlassian-bamboo-agentbackups processed file: C:Optatlassian-bamboo-agentbin processed file: C:Optatlassian-bamboo-agentebs-resources processed file: C:Optatlassian-bamboo-agentetc processed file: C:Optatlassian-bamboo-agentbackupsbamboo-elastic-agent.bat processed file: C:Optatlassian-bamboo-agentbinatlassian-bamboo-agent-elastic-installer.jar processed file: C:Optatlassian-bamboo-agentbinbamboo-elastic-agent processed file: C:Optatlassian-bamboo-agentbinbamboo-elastic-agent.bat processed file: C:Optatlassian-bamboo-agentbinbambooShellFunctions.sh processed file: C:Optatlassian-bamboo-agentbincheckElasticAgent.sh processed file: C:Optatlassian-bamboo-agentbincommonFunctions.sh processed file: C:Optatlassian-bamboo-agentbincreateInitialVolume.sh processed file: C:Optatlassian-bamboo-agentbingenerateSnapshot.sh processed file: C:Optatlassian-bamboo-agentbingetCustomData.bat processed file: C:Optatlassian-bamboo-agentbingetCustomData.sh processed file: C:Optatlassian-bamboo-agentbinmountEbsDevice.sh processed file: C:Optatlassian-bamboo-agentbinprepareInstanceForSaving.bat processed file: C:Optatlassian-bamboo-agentbinprepareInstanceForSaving.sh processed file: C:Optatlassian-bamboo-agentbinrestoreEbsSnapshotFromUserData.sh processed file: C:Optatlassian-bamboo-agentbinrestoreSnapshot.sh processed file: C:Optatlassian-bamboo-agentbinrewarmEbsSnapshot.sh processed file: C:Optatlassian-bamboo-agentbinrunStartupScripts.sh processed file: C:Optatlassian-bamboo-agentbinsetAwsEnv.sh processed file: C:Optatlassian-bamboo-agentbinsetupEbsSnapshot.sh processed file: C:Optatlassian-bamboo-agentbinsetupEphemeralStorageStructure.sh processed file: C:Optatlassian-bamboo-agentbintestIfStartedFromBamboo.sh processed file: C:Optatlassian-bamboo-agentbinunmountVolume.sh processed file: C:Optatlassian-bamboo-agentbinwarmEbsSnapshot.sh processed file: C:Optatlassian-bamboo-agentebs-resourcesbamboo-agent.cfg.xml processed file: C:Optatlassian-bamboo-agentebs-resourcesbuild.properties processed file: C:Optatlassian-bamboo-agentebs-resourcescustomiseInstance.sh processed file: C:Optatlassian-bamboo-agentebs-resourcesec2Utils.sh processed file: C:Optatlassian-bamboo-agentebs-resourcessettings.xml processed file: C:Optatlassian-bamboo-agentetccopy-logs processed file: C:Optatlassian-bamboo-agentetcmotd processed file: C:Optatlassian-bamboo-agentetcprofile.sh processed file: C:Optatlassian-bamboo-agentetcrc.local Successfully processed 38 files; Failed processing 0 files If it's your internal image, it's safe to just save it now. Otherwise, you may want to remove some build files/authorisation data/Maven caches from c:build-dir and c:Usersbamboo_agent first. Press any key to continue . . .
Теперь – можно установить всё необходимое для агента – Maven, .NET Framework, Python, Git и т.д., после чего – создать AMI для будущих агентов.
Имейте ввиду, что запуск нового инстанса и агента на нём занимает 10-15 минут, не спешите перезапускать всё/редактировать настройки: