使用ansible-playbook来搭建jenkins

目录

    • ansbile-playbookの書き方

 

    • 実行手順

 

    Vagarantでの実行

如何编写ansible-playbook

构成

ansible_test
├─ansible
  ├─inventory
  │  └─jenkins
  │    └─jenkins.yml
  ├─roles
  │ └─jenkins
  │   ├─tasks
  │   │  ├─common.yml
  │   │  ├─jenkins.yml
  │   │  └─main.yml
  │   └─vars
  │      └─main.yml
  └─jenkins.yml

库存

[jenkins]
# 対象のサーバのIPアドレスまたはホスト名
    対象のサーバを定義

主要

---
- name: Setup jenkins
  hosts: all
  sudo: yes
  roles:
    - jenkins
    • 実行するファイル

 

    • この場合sudo権限でroles/jenkins/main.ymlを実行する

 

    rolesは複数指定可能
---
- include: common.yml
- include: jenkins.yml
    • ベタ書きもできるけど他にもタスクしやすいように分けた

 

    上から順に実行

任务

常见的 de)

---
- name: Install common packages
  apt: pkg={{ item }} state=latest update_cache=yes
  with_items: jenkins_preparation_items
tags:
    - common
    - jenkins
    • with_itemsをvars/main.ymlに記述

 

    tagsを登録しておくと登録したtagのみを実行することも可能

詹金斯

---
- name: Add the maven3 PPA
  raw: add-apt-repository ppa:natecarlson/maven3 -y
  tags:
    - jenkins

- name: Install jenkins dependencies
  apt: pkg={{ item }} state=present update_cache=yes
  register: jdk_installed
  with_items: jenkins_dependencies
  tags:
    - jenkins

- name: Update java alternatives
  action: command update-java-alternatives -s java-1.7.0-openjdk-amd64
  when: jdk_installed.changed
  tags:
    - jenkins

- name: Get jenkins pkg
  action: shell wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
  tags:
    - jenkins

- name: Add jenkins pkg
  command: echo 'deb http://pkg.jenkins-ci.org/debian binary/' > /etc/apt/sources.list.d/jenkins.list
  tags:
    - jenkins

- name: Install jenkins
  apt: pkg=jenkins state=latest update_cache=yes
  register: jenkins_installed
  tags:
    - jenkins

主要的

---
jenkins_preparation_items:
  - python-software-properties
  - python
  - g++
  - make
  - git
jenkins_dependencies:
  - openjdk-7-jre
  - openjdk-7-jdk
  - maven3

适合的选择

parameterrequireddefaultchoicescommentcache_valid_timeno

キャッシュの有効時間
単位はsecforcenono

  • yes
  • no

installs/removesを強制的にするstatenopresent

  • latest
  • absent
  • present

installするpackageの状態を確かめるupdate_cacheno

  • yes
  • no

apt-get updateをoperation前にするかどうか

    他にもあるよ

执行步骤

创建Ansible环境

安装Ansible

$ brew update

# エラーが出る方のみ
$ cd $(brew --prefix)
$ git fetch origin
$ git reset --hard origin/master

$ brew install ansible
$ ansible --version
# ansible-1.7.2

不需要使用ansible-1.7.2版本。

# インストール
$ easy_install virtualenv

# virtual環境の構築
$ virtualenv ansible-env

# virtual環境に入ってansibleに必要なものをinstallする
$ source ansible-env/bin/activate
$ easy_install pip
$ pip install paramiko PyYAML jinja2

# ansibleのinstall
$ git clone git://github.com/ansible/ansible.git ansible_setup
$ cd ansible_setup
$ source ./hacking/env-setup
$ git submodule update --init --recursive
$ cd ..

# ERROR: apt is not a legal parameter in an Ansible task or handler はgit submodule updateで解決した

执行

$ pwd
# /Users/hoge/ansible_test
// 状況に応じてoptionつける
$ ansible-playbook -i ./ansible/inventory/jenkins/jenkins.yml ./ansible/jenkins.yml -K
    • -i INVENTORY, –inventory=INVENTORY

インベントリファイルを指定する

-k, –ask-pass

SSHのパスワードを尋ねる

-K, –ask-sudo-pass

sudoのパスワードを尋ねる

-u REMOTE_USER, –user=REMOTE_USER

SSHで接続するユーザ名を指定する

-C, –check

dry runできる(実際にサーバは変更されない)

-t TAGS, –tags=TAGS

tagを指定できる
カンマ区切りで複数指定も可能

-vvv

コンソール出力される

在Vagrant上运行

Vagrantfile的配置设置

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::configure("2") do |config|

  # ubuntu 12.04...
  config.vm.box = "ubuntu/precise64"

  #jenkins
  config.vm.network :forwarded_port, guest: 8080, host: 8080

  # using a specific IP.
  config.vm.network :private_network, ip: "192.168.33.10"

end

库存

[jenkins]
192.168.33.10

sshconfig 的设置

Host 192.168.33.*
IdentityFile ~/.vagrant.d/insecure_private_key
User vagrant

执行

$ vargant --version
Vagrant 1.6.5
$ vagrant up

$ ansible-playbook -i ./ansible/inventory/jenkins/jenkins.yml ./ansible/jenkins.yml -K

确认访问

    localhost:8080でjenkinsが起動していれば完了

请参阅网址。

(Translation: Please refer to the URL.)

    • https://weluse.de/blog/installing-ansible-on-os-x.html

 

    • http://d.hatena.ne.jp/akishin999/20130815/1376520672

 

    • https://github.com/yteraoka/ansible-tutorial/wiki/ansible-playbook%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89

 

    • http://docs.ansible.com/apt_module.html

 

    http://qiita.com/harapeko_wktk/items/f4f44ddb5d3912e15ea2
bannerAds