пятница, 11 ноября 2016 г.

Enable (Disable) TeamCity agents in specified pool


Python script that make Enabled or Disabled all agents in specified TeamCity pool

#!/usr/bin/python
# coding: UTF-8
#
# script running from console with 2 arguments
# 1st is pool name and 2nd is disable/enable (which what you want to do with agents enable or disable)
#
# Example: python ed_agents.py "Test Pool" disable
#

import sys
import xml.etree.ElementTree as ET
import requests

#Username for TeamCity
username = 'guest'
#password for TeamCity
passwd = username
#url of TeamCity
url = 'http://teamcity.corp'
poolnId = ''

#Function to do agents Disabled or Enabled
def agentAction(action):

        r = requests.get(listPoolAgents, auth=(username, passwd))
        content = r.content
        tree = ET.fromstring(content)

        if action == "disable":
                for place in tree.findall('agent'):
                        #taking link to agent
                        agentHref = place.get('href')
                        #taking name of agent
                        agentName = place.get('name')
                        agentDisable = url + agentHref + '/enabled'
                        #put request to TeamCity API
                        r = requests.put(agentDisable, data='false', auth=(username, passwd))
                        print "Agent " + agentName + " is disabled"
        if action == "enable":
                for place in tree.findall('agent'):
                        agentHref = place.get('href')
                        agentName = place.get('name')
                        agentEnable = url + agentHref + '/enabled'
                        r = requests.put(agentEnable, data='true', auth=(username, passwd))
                        print "Agent " + agentName + " is enabled"

#get list of all agents using TeamCity API
r = requests.get('http://teamcity.corp/httpAuth/app/rest/agentPools', auth=(username, passwd))
content = r.content
tree = ET.fromstring(content)

#taking id of pool what you need
for place in tree.findall('agentPool'):
        poolName = place.get('name')
        poolId = place.get('id')

        if (poolName == sys.argv[1]):
                poolnId = poolId

#creating url for pool's agents
listPoolAgents = 'http://teamcity.corp/app/rest/agentPools/id:' + poolnId + '/agents'

agentAction(sys.argv[2])

понедельник, 24 октября 2016 г.

How to configure nginx with AD authorozation

To provide nginx authorization via Microsoft Active Directory you should use the next commands in Ubuntu 16.04:
  1. apt update
  2. sudo apt install dpkg-dev libldap2-dev
  3. sudo add-apt-repository ppa:nginx/stable
  4. Edit sudo vim /etc/apt/sources.list.d/nginx-stable-trusty.list add dpkg-src:
    1. deb http://ppa.launchpad.net/nginx/stable/ubuntu xenial main
    2. deb-src http://ppa.launchpad.net/nginx/stable/ubuntu xenial main
  5. sudo apt update
  6. sudo apt-get source nginx
  7. sudo apt-get build-dep nginx
  8. Edit nginx-1.10.1/debian/rules and under section ‘full_configure_flags := \’ add following line:
    1. —add-module=$(MODULESDIR)/nginx-auth-ldap
  9. Inside modules directory “sudo git clone https://github.com/kvspb/nginx-auth-ldap.git
  10. cd /opt/nginx/nginx-1.10.1
  11. sudo dpkg-buildpackage -uc -us (or -b flag)
  12. Install generated packages inside /opt/nginx
    1. sudo dpkg —install nginx-common_1.10.1-1+xenial1_all.deb
    2. sudo dpkg —install nginx-full_1.10.1-1+xenial1_amd64.deb
  13. Edit main config file /etc/nginx/nginx.conf
  14. Edit /etc/nginx/fastcgi_params and add following:
    1. “fastcgi_param REMOTE_USER $remote_user”;
  15. sudo nginx -V to check if nginx-auth-ldap is loaded

 
This configuration lines you should insert into your main configuration file /etc/nginx/nginx.conf before the

include /etc/nginx/conf.d/*.conf; 
include /etc/nginx/sites-enabled/*;

ldap_server LDAP1 { 
   url "ldap://<ip-address>:3268/DC=<domain-name>,DC=com?sAMAccountName?sub?";
   binddn "<Bind Account>"; 
   binddn_passwd "<Bind Password>";  
   connect_timeout 5s; bind_timeout 5s;  
   request_timeout 5s; satisfy any;  
}

And the lines that goes below you shoud insert in the configuration file of your site
/etc/nginx/conf.d/something.conf in the server part and before location part:

auth_ldap "Restricted Access"; 
auth_ldap_servers LDAP1;

четверг, 29 сентября 2016 г.

Ansible change line in file on remote hosts


  If you want to change some line in some file (for exampe it would be /etc/environment and line that beginning from JAVA_HOME  ) on group of hosts with ansible you should use the next playbook:

---
- hosts: PCPool
  sudo: yes
  tasks:

    - name: Change line
      lineinfile: dest=/etc/environment regexp='^JAVA_HOME' line=JAVA_HOME="/usr/lib/jvm/java-8-oracle"


where hosts - group of hosts from ansible file hosts
          ineinfile - module of ansible

and in console you should use the next command:

 ansible-playbook change_line.yml -k --user=USER --ask-sudo-pass


if you want to chek the results:

ansible PCPool -u agent -k -m shell -a 'less /etc/invironment'

среда, 7 сентября 2016 г.

VSphere Client Windows 10 installation issues

If you have troubles with installing VSphere Client on Windows 10 with error "....NET 3.5 Framework..." you should to run this command where "E" you image with Windows 10.

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:E:\sources\sxs

пятница, 2 сентября 2016 г.

Charles proxy Windows 10 issue


If you want to debug your application with Charles proxy on Windows 10 but Charles wont show connections from your application you should use Windows Loopback Exemptions Manager ( https://loopback.codeplex.com/ ) and add your application as Checked.

среда, 22 июня 2016 г.

TeamCity Host key verification failed error

TeamCity Build step failed- the error was:

 [Step 5/7] Host key verification failed.
[Step 5/7] fatal: The remote end hung up unexpectedly
 
To fix this you should run the next command on build agent:
 
git ls-remote -h ssh://git@URL_OF_STASH/PATH_TO_FILE.git
 
and type yes to add your stash server to known hosts.

четверг, 7 апреля 2016 г.

Installing Oracle java on Ubuntu 14.04

Steps to install Oracle java on Ubuntu 14.04


sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
 
#install java 8
sudo apt-get install oracle-java8-installer
 
#show installed version of java 
update-alternatives --config java 
 
nano /etc/environment
JAVA_HOME="YOUR_PATH"
 
source /etc/environment
echo $JAVA_HOME  
 
 
change default version of java in your system
update-alternatives --config java 
 
or by the next bash script 

#/usr/bin/sh
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

#install java 8

sudo apt-get install oracle-java8-installer


#show installed version of java

echo 'JAVA_HOME="/usr/lib/jvm/java-8-oracle"' >> /etc/environment

source /etc/environment

echo $JAVA_HOME
echo "!!!ALL DONE!!!"

четверг, 31 марта 2016 г.

VPN bat script

The following script make connection with vpn server with preconfigured windows connection with ConnectionName, MyUsername and password MyP@ssw0rd . And adding static route to NetSubnet with SubnetMask :

 ---------------------------------------------------------------------------------------------------------

@ECHO OFF
COLOR 8F
SET NetSubnet=192.168.0.0
SET SubnetMask=255.255.255.0
ECHO.
ECHO ###########################################################
ECHO            PLEASE DO NOT CLOSE THIS WINDOW     
ECHO This window will automatically disappear after 20 seconds.
ECHO ###########################################################
ECHO.
ECHO Dialing VPN, please wait....
RASDial ConnectionName MyUsername MyP@ssw0rd
ECHO.
ECHO Obtaining IP Address, please wait....
PING 127.0.0.1 -n 15 -l 0 -w 0 >NUL
SET cWMIC=WMIC NICCONFIG WHERE "ServiceName='NdisWan'" GET IPAddress /FORMAT:CSV
FOR /F "tokens=2 delims=,{}" %%i IN (' %cWMIC% ^|FIND "."') DO SET IPAddress=%%i
ECHO Obtained IP address: %IPAddress%
ECHO.
ECHO Updating Routing Table, please wait....
ECHO.
ROUTE DELETE %NetSubnet% >NUL
ROUTE ADD %NetSubnet% MASK %SubnetMask% %IPAddress% METRIC 1
ROUTE PRINT %NetSubnet%
PING -n 5 -w 1 -l 1 127.0.0.1 >NUL
EXIT /B 0

пятница, 26 февраля 2016 г.

Windows 10 Home to Windows 10 Pro


Problem begun when our company brought laptop with Windows 10 Home on board but we should use our corporate Windows 10 Pro. But you cant do this because your laptop have firmwared with your personal Windows 10 Home key.

The solution is simple. You shoud change your key on laptop to the next generic key VK7JG-NPHTM-C97JM-9MPGT-3V66T . After that, laptop will do upgrade to Windows 10 Pro. And in the ending, you can activate your laptop with your corporate key.