Bamboo: установка удалённого агента на Windows

By | 06/25/2015
 

logo_bamboo_blueДля управления агентами а облаке от Amazon у Bamboo есть специальная возможность – Elastic Bamboo.

Для того, что бы работать с удалённым агентом – можно использовать предустановленные AMI – либо создать свой.

Создание и настройку Elastic Bamboo опишу в следующей статье, а в этой – процесс установки Bamboo агента на Windows Server 2012 R2.

Установка достаточно геморройная (TeamCity, я люблю тебя) – но преимущества Bamboo вполне окупают затраты времени.

Подготовка Windows

Правой кнопкой кликаем на машине, и выбираем “Get Windows password“:

bamboo_ec2_9

Выбираем ключ:

bamboo_ec2_10

И жмём Decrypt password:

bamboo_ec2_11

После чего – подключаемся обычным клиентом RDP:

bamboo_ec2_12

Первое – создать пользователя.

Переходим в Server Manager > Tools > Computer Management.

Правой кнопкой кликаем на папке Users, и добавляем нового пользователя.

bamboo_ec2_32

Затем – кликаем на папке Groups, находим в ней Administrators, и жмём Add:

bamboo_ec2_34

Затем – Advanced > Find now, находим нового пользователя и добавляем.

Windows firewall – должен пропускать входящий TCP на порт 26224.

Для AmazonBamboo создаёт свою отдельную 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, и добавляем новую задачу:

bamboo_ec2_35

Справа – смените пользователя (Change user or Group), который будет запускать задачу, на недавно созданного и установите Run whether user logged on or not:

bamboo_ec2_36

Во вкладке Triggers – установите триггер запуск системы:

bamboo_ec2_40

 

Во вкладке Actions – укажите путь к скрипту Bamboo-агента:

bamboo_ec2_38

Готово. Для проверки – кликните правой кнопкой, и выберите Run:

bamboo_ec2_39

Результат будет записан в файл 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 минут, не спешите перезапускать всё/редактировать настройки:

bamboo_ec2_41