user: ubuntu
vars:
- jenkins_user: 'jenkins-build'
- - exclusive: true
+ # jenkins API credentials:
+ - api_user: 'ceph-jenkins'
+ - token: '{{ token }}'
+ - api_uri: 'https://jenkins.ceph.com'
+ - nodename: '{{ nodename }}'
+ - labels: '{{ labels }}'
+
tasks:
- name: create a {{ jenkins_user }} user
- user: name={{ jenkins_user }} comment="Jenkins Build Slave User" home="/home/{{ jenkins_user }}"
+ user: name={{ jenkins_user }} comment="Jenkins Build Slave User"
- name: Create .ssh directory
file: path=/home/{{ jenkins_user }}/.ssh
state=directory
- name: set the authorized keys
- authorized_key: user={{ jenkins_user }} key="{{ lookup('file', 'files/ssh/keys/jenkins_build.pub') }}"
+ authorized_key: user={{ jenkins_user }} key="{{ lookup('file', 'playbook/files/ssh/keys/jenkins_build.pub') }}"
- name: ensure {{ jenkins_user }} can sudo without a prompt
sudo: yes
- name: ensure the build dir exists
file: path=/home/{{ jenkins_user }}/build state=directory owner={{ jenkins_user }}
+ - name: ensure the build dir has the right owner permissions
+ file: path=/home/{{ jenkins_user }}/build state=directory owner={{ jenkins_user }}
+
- name: Install RPM requirements
sudo: yes
yum: name={{ item }} state=present
- epel-release
- java-1.7.0-openjdk
- git
+ - python-pip
+ - python-virtualenv
+ - libtool
#- rpm-sign
+ - autoconf
+ - redhat-lsb-core
+ - automake
+ - binutils
+ - bison
+ - flex
+ - gcc
+ - gcc-c++
+ - gettext
+ - libtool
+ - make
+ - patch
+ - pkgconfig
+ - redhat-rpm-config
+ - rpm-build
- rpmdevtools
when: ansible_pkg_mgr == "yum"
- - name: ensure the rpmmacros file exists to fix centos builds
- template:
- src: files/rpmmacros.j2
- dest: "/home/{{ jenkins_user }}/.rpmmacros"
- owner: "{{ jenkins_user }}"
- when: ansible_pkg_mgr == "yum"
-
# Run the equivalent of "apt-get update" as a separate step
- apt: update_cache=yes
when: ansible_pkg_mgr == "apt"
- python-dev
- python-pip
- python-virtualenv
+ - libtool
+ - autotools-dev
+ - automake
# jenkins-job-builder job:
- libyaml-dev
# ceph-docs job:
(ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'precise') or
(ansible_distribution == 'Debian' and ansible_distribution_release == 'wheezy')
+ - name: ensure the rpmmacros file exists to fix centos builds
+ file: path="/home/{{ jenkins_user }}/.rpmmacros" owner="{{ jenkins_user }}" state=touch
+
+ - name: write the rpmmacros needed in centos
+ lineinfile:
+ dest: "/home/{{ jenkins_user }}/.rpmmacros"
+ regexp: '^%dist'
+ line: '%dist .el{{ ansible_distribution_major_version }}'
+ when: ansible_pkg_mgr == "yum"
+
+ - name: install six, latest one
+ sudo: true
+ pip: name=six state=latest
- name: install python-jenkins
sudo: true
- pip: name=python-jenkins
+ # https://bugs.launchpad.net/python-jenkins/+bug/1500898
+ pip: name=python-jenkins version=0.4.7
- name: add github.com host key
sudo: true
known_hosts:
path: '/etc/ssh/ssh_known_hosts'
- name: 'github.com'
+ # we need to use 'host' here because prado currently uses ansible-playbook==1.9.1
+ host: 'github.com'
# github.com.pub is the output of `ssh-keyscan github.com`
- key: "{{ lookup('file', 'files/ssh/hostkeys/github.com.pub') }}"
+ key: "{{ lookup('file', 'playbook/files/ssh/hostkeys/github.com.pub') }}"
- name: register the new slave to jenkins master
jenkins-node:
remoteFS: '/home/{{ jenkins_user }}/build'
# XXX this should be configurable, not all nodes should have one executor
executors: 1
- exclusive: "{{ exclusive }}"
+ exclusive: true
+++ /dev/null
----
-
-- hosts: all
- sudo: true
- user: ubuntu
- vars:
- - jenkins_user: 'jenkins-build'
- # jenkins API credentials:
- - api_user: 'ceph-jenkins'
- - token: '{{ token }}'
- - api_uri: 'https://jenkins.ceph.com'
- - nodename: '{{ nodename }}'
- - labels: '{{ labels }}'
-
- tasks:
- - name: create a {{ jenkins_user }} user
- user: name={{ jenkins_user }} comment="Jenkins Build Slave User"
-
- - name: Create .ssh directory
- file: path=/home/{{ jenkins_user }}/.ssh
- state=directory
-
- - name: set the authorized keys
- authorized_key: user={{ jenkins_user }} key="{{ lookup('file', 'playbook/files/ssh/keys/jenkins_build.pub') }}"
-
- - name: ensure {{ jenkins_user }} can sudo without a prompt
- sudo: yes
- lineinfile:
- dest: /etc/sudoers
- regexp: '^{{ jenkins_user }} ALL'
- line: '{{ jenkins_user }} ALL=(ALL:ALL) NOPASSWD:ALL'
- validate: 'visudo -cf %s'
-
- - name: ensure the build dir exists
- file: path=/home/{{ jenkins_user }}/build state=directory owner={{ jenkins_user }}
-
- - name: ensure the build dir has the right owner permissions
- file: path=/home/{{ jenkins_user }}/build state=directory owner={{ jenkins_user }}
-
- - name: Install RPM requirements
- sudo: yes
- yum: name={{ item }} state=present
- with_items:
- - createrepo
- - epel-release
- - java-1.7.0-openjdk
- - git
- - python-pip
- - python-virtualenv
- - libtool
- #- rpm-sign
- - autoconf
- - redhat-lsb-core
- - automake
- - binutils
- - bison
- - flex
- - gcc
- - gcc-c++
- - gettext
- - libtool
- - make
- - patch
- - pkgconfig
- - redhat-rpm-config
- - rpm-build
- - rpmdevtools
- when: ansible_pkg_mgr == "yum"
-
- # Run the equivalent of "apt-get update" as a separate step
- - apt: update_cache=yes
- when: ansible_pkg_mgr == "apt"
-
- - name: Install DEB requirements
- sudo: yes
- apt: name={{ item }} state=present
- with_items:
- - git
- - fakeroot
- - fakeroot-ng
- - debhelper
- - reprepro
- - dchroot
- - devscripts
- - pbuilder
- - pkg-config
- - openjdk-7-jre
- - python-dev
- - python-pip
- - python-virtualenv
- - libtool
- - autotools-dev
- - automake
- # jenkins-job-builder job:
- - libyaml-dev
- # ceph-docs job:
- - doxygen
- - ditaa
- - ant
- # teuthology-docs job:
- - libmysqlclient-dev
- - libevent-dev
- - libffi-dev
- when: ansible_pkg_mgr == "apt"
-
- - name: correct java version selected
- alternatives: name=java path=/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
- when:
- (ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'precise') or
- (ansible_distribution == 'Debian' and ansible_distribution_release == 'wheezy')
-
- - name: ensure the rpmmacros file exists to fix centos builds
- file: path="/home/{{ jenkins_user }}/.rpmmacros" owner="{{ jenkins_user }}" state=touch
-
- - name: write the rpmmacros needed in centos
- lineinfile:
- dest: "/home/{{ jenkins_user }}/.rpmmacros"
- regexp: '^%dist'
- line: '%dist .el{{ ansible_distribution_major_version }}'
- when: ansible_pkg_mgr == "yum"
-
- - name: install six, latest one
- sudo: true
- pip: name=six state=latest
-
- - name: install python-jenkins
- sudo: true
- # https://bugs.launchpad.net/python-jenkins/+bug/1500898
- pip: name=python-jenkins version=0.4.7
-
- - name: add github.com host key
- sudo: true
- known_hosts:
- path: '/etc/ssh/ssh_known_hosts'
- # we need to use 'host' here because prado currently uses ansible-playbook==1.9.1
- host: 'github.com'
- # github.com.pub is the output of `ssh-keyscan github.com`
- key: "{{ lookup('file', 'playbook/files/ssh/hostkeys/github.com.pub') }}"
-
- - name: register the new slave to jenkins master
- jenkins-node:
- username: "{{ api_user }}"
- uri: "{{ api_uri }}"
- password: "{{ token }}"
- # relies on a convention to set a unique name that allows a reverse
- # mapping from Jenkins back to whatever service created the current
- # node
- name: "{{ ansible_default_ipv4.address }}+{{ nodename }}"
- labels: "{{ labels }}"
- host: "{{ ansible_default_ipv4.address }}"
- credentialsId: '39fa150b-b2a1-416e-b334-29a9a2c0b32d'
- remoteFS: '/home/{{ jenkins_user }}/build'
- # XXX this should be configurable, not all nodes should have one executor
- executors: 1
- exclusive: true