Jenkinsのセットアップ(インストールとsshの設定)

Jekinsのインストール,設定メモ.Markdownで残っていたので公開する.

install & run (for mac)

$ brew install jenkins # インストール
$ java -jar /usr/local/opt/jenkins/libexec/jenkins.war # 起動.デフォルトポート:8080

Publish over SSH

JenkinsからリモートサーバへSSH&SCPするために使用したプラグイン. Jenkinsのホストで生成した秘密鍵と公開鍵を用いてリモートサーバにアクセスする.

  • ssh keyの生成 (<ホームディレクトリ>/.ssh/に秘密鍵id_rsa,公開鍵id_rsa.pubが生成されたとする)
[Jenkins host]
$ ssh-keygen -t rsa
Enter file in which to save the key (<ホームディレクトリ>/.ssh/id_rsa): <鍵の保存先と名前>
Enter passphrase (empty for no passphrase): <鍵のパスフレーズ>
  • 公開鍵をリモートサーバにコピー
  • 公開鍵の登録
[remote server]
$ cat id_rsa.pub >> ~/.ssh/authorized_keys 
  • Jenkinsに登録
    • [Jenkinsの管理] -> [システムの設定] -> Publish over SSH
      • 鍵の設定
      • Remote Serverの追加
        • [追加] をクリックし,出現した項目に以下を入力
          • Name : サーバの名前
          • Hostname: サーバのアドレス or URL
          • Username: アクセスするユーザ
        • [Test Configuration] をクリック.接続テスト 
  • ジョブ毎の設定
    • [設定]
      • ビルド環境以下の2つが設定可能となる(上がビルド前,下がビルド後に実行)
        • Send files or execute commands over SSH before the build starts
        • Send files or execute commands over SSH after the build runs
      • 各設定
        • Name : 設定したサーバの名前
        • Transfers: 送るファイル,実行するコマンド
      • [Add Transfer Set] で実行するサーバ,コマンドを増やす事ができる.
      • Tips
        • [高度な設定]により設定を追加できる.
          • Exec timeout (ms) : SSHで実行する操作のタイムアウトの時間を設定.時間がかかる処理は数を増やしておく.

pluginを用いない場合のSSHの設定

ビルドのシェルスクリプトsshのコマンドを利用する.

$ ssh -i <秘密鍵> <リモート先> <実行コマンド>

sudoのパスワードと秘密鍵パスフレーズを突破する必要があるため,以下の設定を行っておく必要がある.

  • sudoのパスワード省略
    • visudoで/etc/sudoersに以下の行を追加する.%sudo ALL=(ALL:ALL) ALLの下に追記した.
$ sudo visudo
<username> ALL=(ALL) NOPASSWD:ALL
[Mac]
$ ssh-add -l # 秘密鍵の登録状況
$ ssh-add <秘密鍵>

[Linux]
$ eval `ssh-agent`
$ ssh-add -l
$ ssh-add <秘密鍵>

Tips: sudo できなくなったら. Ubuntuの場合

  • Shiftを押しながら起動.シングルユーザモード(recoverey mode)でログイン.
  • root Drop to root shell prompt

なんでこんなTipsがあるかって? 察して.

Reference

Preseedの設定

モチベーション

  • Cobblerで自動インストールできるようになったは良いが,いろいろ設定を変えたい.
  • 自動デプロイまで視野に入れるなら,せめてsshも勝手に入っていて欲しい.

最初からTips

基本はサンプルから

ユーザ名/パスワードの変更

  • 下記の設定でubuntu/ubuntuとなる.どの項目で何が設定されるかは推して知るべし.
  • パスワードはハッシュ値で設定されている./etc/shadow を見ると自分のマシンで設定したパスワードに対応したハッシュの値を見ることができる.
d-i passwd/user-fullname string ubuntu
d-i passwd/username string ubuntu
d-i passwd/user-password-crypted password $6$.1eHH0iY$ArGzKX2YeQ3G6U.mlOO3A.NaL22Ewgz8Fi4qqz.Ns7EMKjEJRIW2Pm/TikDptZpuu7I92frytmk5YeL.9fRY4.

パッケージの追加

  • sshをインストールしてもらう.以下の行を追加.
  • gitなどもインストールできる.後ろに一つスペースを開けて,gitと追加するだけ.
d-i pkgsel/include string ssh

Preseedファイル

  • いろいろ試行錯誤したし(主にコメント中の$のせい),動作保証なし.CobblerによるPXEブートしか試してない.
  • Ubuntu14.04が入る.
  • trustyのapt-mirrorが必要.IPは192.168.10.3.
  • NTPはデフォルト(ntp.ubuntu.com)のまま.
  • ユーザ名はUbuntu,パスもUbuntu
  • sshをインストールする.
  • !!注意:$は\でエスケープしないと動かなかった.下記のPreseedはエスケープ済み.
### Localization
# Preseeding only locale sets language, country and locale.
#d-i debian-installer/locale string en_US

# The values can also be preseeded individually for greater flexibility.
d-i debian-installer/language string en
d-i debian-installer/country string JP
#d-i debian-installer/country string japan
d-i debian-installer/locale string en_US.UTF-8
# Optionally specify additional locales to be generated.
#d-i localechooser/supported-locales multiselect en_US.UTF-8, nl_NL.UTF-8

# Keyboard selection.
# keymap is an alias for keyboard-configuration/xkb-keymap
d-i keymap select us
# d-i keymap select jp
# d-i keyboard-configuration/xkb-keymap select jp
# d-i keyboard-configuration/toggle select No toggling

d-i     debian-installer/splash boolean false
d-i     console-setup/ask_detect        boolean false
d-i     console-setup/layoutcode        string us
d-i     console-setup/variantcode       string


### Network configuration
# Disable network configuration entirely. This is useful for cdrom
# installations on non-networked devices where the network questions,
# warning and long timeouts are a nuisance.
#d-i netcfg/enable boolean false

# netcfg will choose an interface that has link if possible. This makes it
# skip displaying a list if there is more than one interface.
#d-i netcfg/choose_interface select auto

# To pick a particular interface instead:
#d-i netcfg/choose_interface select eth1

# To set a different link detection timeout (default is 3 seconds).
# Values are interpreted as seconds.
#d-i netcfg/link_detection_timeout string 10

# If you have a slow dhcp server and the installer times out waiting for
# it, this might be useful.
#d-i netcfg/dhcp_timeout string 60
#d-i netcfg/dhcpv6_timeout string 60

# If you prefer to configure the network manually, uncomment this line and
# the static network configuration below.
#d-i netcfg/disable_autoconfig boolean true

# If you want the preconfiguration file to work on systems both with and
# without a dhcp server, uncomment these lines and the static network
# configuration below.
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Configure network manually

# Static network configuration.
#
# IPv4 example
#d-i netcfg/get_ipaddress string 192.168.1.42
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/get_nameservers string 192.168.1.1
#d-i netcfg/confirm_static boolean true
#
# IPv6 example
#d-i netcfg/get_ipaddress string fc00::2
#d-i netcfg/get_netmask string ffff:ffff:ffff:ffff::
#d-i netcfg/get_gateway string fc00::1
#d-i netcfg/get_nameservers string fc00::1
#d-i netcfg/confirm_static boolean true

# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the questions
# from being shown, even if values come from dhcp.
#d-i netcfg/get_hostname string unassigned-hostname
#d-i netcfg/get_domain string unassigned-domain

# If you want to force a hostname, regardless of what either the DHCP
# server returns or what the reverse DNS entry for the IP is, uncomment
# and adjust the following line.
#d-i netcfg/hostname string somehost

# Disable that annoying WEP key dialog.
#d-i netcfg/wireless_wep string
# The wacky dhcp hostname that some ISPs use as a password of sorts.
#d-i netcfg/dhcp_hostname string radish

# If non-free firmware is needed for the network or other hardware, you can
# configure the installer to always try to load it, without prompting. Or
# change to false to disable asking.
#d-i hw-detect/load_firmware boolean true

### Network console
# Use the following settings if you wish to make use of the network-console
# component for remote installation over SSH. This only makes sense if you
# intend to perform the remainder of the installation manually.
#d-i anna/choose_modules string network-console
#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key
#d-i network-console/password password r00tme
#d-i network-console/password-again password r00tme

### Mirror settings
# If you select ftp, the mirror/country string does not need to be set.
# d-i mirror/protocol string http
d-i mirror/country string manual
d-i mirror/http/hostname string 192.168.10.3
d-i mirror/http/directory string /ubuntu
# d-i mirror/http/proxy string

# Suite to use for loading installer components (optional).
d-i mirror/suite string trusty
#d-i mirror/udeb/suite string testing

d-i mirror/udeb/components multiselect main, restricted, multiverse, universe



### Account setup
# Skip creation of a root account (normal user account will be able to
# use sudo).
d-i passwd/root-login boolean false
# Alternatively, to skip creation of a normal user account.
d-i passwd/make-user boolean true

# Root password, either in clear text
#d-i passwd/root-password password r00tme
#d-i passwd/root-password-again password r00tme
# or encrypted using an MD5 hash.
#d-i passwd/root-password-crypted password [MD5 hash]

# To create a normal user account.
d-i passwd/user-fullname string ubuntu
d-i passwd/username string ubuntu
# Normal user's password, either in clear text
#d-i passwd/user-password password xxxxx
#d-i passwd/user-password-again password xxxxx
# or encrypted using an MD5 hash.
d-i passwd/user-password-crypted password $6$.1eHH0iY$ArGzKX2YeQ3G6U.mlOO3A.NaL22Ewgz8Fi4qqz.Ns7EMKjEJRIW2Pm/TikDptZpuu7I92frytmk5YeL.9fRY4.
# d-i     user-setup/allow-password-weak  boolean false
# Create the first user with the specified UID instead of the default.
d-i passwd/user-uid string
#d-i passwd/user-uid string 0101

# The user account will be added to some standard initial groups. To
# override that, use this.
#d-i passwd/user-default-groups string audio cdrom video plugdev netdev powerde\
v vboxsf fuse

d-i passwd/user-default-groups string adm cdrom dialout lpadmin plugdev sambash\
are

### Clock and time zone setup
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true

# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string Asia/Tokyo
#d-i time/zone string Japan

# Controls whether to use NTP to set the clock during the install
d-i clock-setup/ntp boolean true
# NTP server to use. The default is almost always fine here.
d-i clock-setup/ntp-server string ntp.ubuntu.com

### Partitioning
## Partitioning example
# If the system has free space you can choose to only partition that space.
# This is only honoured if partman-auto/method (below) is not set.
#d-i partman-auto/init_automatically_partition select biggest_free

# Alternatively, you may specify a disk to partition. If the system has only
# one disk the installer will default to using that, but otherwise the device
# name must be given in traditional, non-devfs format (so e.g. /dev/hda or
# /dev/sda, and not e.g. /dev/discs/disc0/disc).
# For example, to use the first SCSI/SATA hard disk:
#d-i partman-auto/disk string /dev/sda
# In addition, you'll need to specify the method to use.
# The presently available methods are:
# - regular: use the usual partition types for your architecture
# - lvm:     use LVM to partition the disk
# - crypto:  use LVM within an encrypted partition
d-i partman-auto/method string regular
# Or provide a recipe of your own...
# If you have a way to get a recipe file into the d-i environment, you can
# just point at it.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe

# If not, you can put an entire recipe into the preconfiguration file in one
# (logical) line. This example creates a small /boot partition, suitable
# swap, and uses the rest of the space for the root partition:
#d-i partman-auto/expert_recipe string                         \
#      boot-root ::                                            \
#              40 50 100 ext3                                  \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext3 }    \
#                      mountpoint{ /boot }                     \
#              .                                               \
#              500 10000 1000000000 ext3                       \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext3 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              64 512 300% linux-swap                          \
#                      method{ swap } format{ }                \
#              .

#d-i partman-auto/expert_recipe string                       \
#      boot-root ::                                          \
#              500 10000 1000000000 ext4                     \
#                      $primary{ } $bootable{ }              \
#                      method{ format } format{ }            \
#                      use_filesystem{ } filesystem{ ext4 }  \
#                      mountpoint{ / }                       \
#              .                                             \
#              64 512 300% linux-swap                        \
#                      method{ swap } format{ }              \
#              .

# The full recipe format is documented in the file partman-auto-recipe.txt
# included in the 'debian-installer' package or available from D-I source
# repository. This also documents how to specify settings such as file
# system labels, volume group names and which physical devices to include
# in a volume group.

# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
#d-i partman-partitioning/confirm_write_new_label boolean true
#d-i partman/choose_partition select finish
#d-i partman/confirm boolean true
#d-i partman/confirm_nooverwrite boolean true

## Partitioning using RAID
# The method should be set to "raid".
#d-i partman-auto/method string raid
# Specify the disks to be partitioned. They will all get the same layout,
# so this will only work if the disks are the same size.
#d-i partman-auto/disk string /dev/sda /dev/sdb

# Next you need to specify the physical partitions that will be used.
#d-i partman-auto/expert_recipe string \
#      multiraid ::                                         \
#              1000 5000 4000 raid                          \
#                      $primary{ } method{ raid }           \
#              .                                            \
#              64 512 300% raid                             \
#                      method{ raid }                       \
#              .                                            \
#              500 10000 1000000000 raid                    \
#                      method{ raid }                       \
#              .

# Last you need to specify how the previously defined partitions will be
# used in the RAID setup. Remember to use the correct partition numbers
# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported;
# devices are separated using "#".
# Parameters are:
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
#          <devices> <sparedevices>

#d-i partman-auto-raid/recipe string \
#    1 2 0 ext3 /                    \
#          /dev/sda1#/dev/sdb1       \
#    .                               \
#    1 2 0 swap -                    \
#          /dev/sda5#/dev/sdb5       \
#    .                               \
#    0 2 0 ext3 /home                \
#          /dev/sda6#/dev/sdb6       \
#    .

# For additional information see the file partman-auto-raid-recipe.txt
# included in the 'debian-installer' package or available from D-I source
# repository.

# This makes partman automatically partition without confirmation.
#d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
#d-i partman/choose_partition select finish
d-i partman/choose_partition select Finish partitioning and write changes to di\
skd-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

d-i     partman/default_filesystem string ext3


## Controlling how partitions are mounted
# The default is to mount by UUID, but you can also choose "traditional" to
# use traditional device names, or "label" to try filesystem labels before
# falling back to UUIDs.
#d-i partman/mount_style select uuid

### Base system installation
# Configure APT to not install recommended packages by default. Use of this
# option can result in an incomplete system and should only be used by very
# experienced users.
#d-i base-installer/install-recommends boolean false

# The kernel image (meta) package to be installed; "none" can be used if no
# kernel is to be installed.
#d-i base-installer/kernel/image string linux-image-486
#d-i base-installer/kernel/image string linux-server


### Apt setup
# You can choose to install non-free and contrib software.
#d-i apt-setup/non-free boolean true
#d-i apt-setup/contrib boolean true
# Uncomment this if you don't want to use a network mirror.
#d-i apt-setup/use_mirror boolean false
# Select which update services to use; define the mirrors to be used.
# Values shown below are the normal defaults.
#d-i apt-setup/services-select multiselect security, updates
#d-i apt-setup/security_host string security.debian.org

# Additional repositories, local[0-9] available
#d-i apt-setup/local0/repository string \
#       http://local.server/debian stable main
#d-i apt-setup/local0/comment string local server
# Enable deb-src lines
#d-i apt-setup/local0/source boolean true
# URL to the public key of the local repository; you must provide a key or
# apt will complain about the unauthenticated repository and so the
# sources.list line will be left commented out
#d-i apt-setup/local0/key string http://local.server/key

# By default the installer requires that repositories be authenticated
# using a known gpg key. This setting can be used to disable that
# authentication. Warning: Insecure, not recommended.
#d-i debian-installer/allow_unauthenticated boolean true

d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/multiverse boolean true
d-i apt-setup/services-select multiselect security
d-i apt-setup/security_host string 192.168.10.3
d-i apt-setup/security_path string /ubuntu

### Package selection
tasksel tasksel/first multiselect
# If the desktop task is selected, install the kde and xfce desktops
# instead of the default gnome desktop.
#tasksel tasksel/desktop multiselect kde, xfce

# Individual additional packages to install
d-i pkgsel/include string ssh
# Whether to upgrade packages after debootstrap.
# Allowed values: none, safe-upgrade, full-upgrade
d-i pkgsel/upgrade select none

# Some versions of the installer can report back on what software you have
# installed, and what software you use. The default is not to report back,
# but sending reports helps the project determine what software is most
# popular and include it on CDs.
#popularity-contest popularity-contest/participate boolean false

d-i pkgsel/language-packs multiselect
d-i pkgsel/updatedb boolean true

d-i pkgsel/update-policy select none


### Finishing up the installation
# During installations from serial console, the regular virtual consoles
# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next
# line to prevent this.
d-i finish-install/keep-consoles boolean false

# Avoid that last message about the install being complete.
d-i finish-install/reboot_in_progress note
# This will prevent the installer from ejecting the CD during the reboot,
# which is useful in some situations.
d-i cdrom-detect/eject boolean true

# This is how to make the installer shutdown when finished, but not
# reboot into the installed system.
#d-i debian-installer/exit/halt boolean true
# This will power off the machine instead of just halting it.
#d-i debian-installer/exit/poweroff boolean true
d-i     debian-installer/exit/halt      boolean false
d-i     debian-installer/exit/poweroff  boolean false

d-i     debian-installer/allow_unauthenticated  string false

d-i     grub-installer/skip     boolean false
d-i     lilo-installer/skip     boolean false
d-i     grub-installer/only_debian      boolean true
d-i     grub-installer/with_other_os    boolean true

### Preseeding other packages
# Depending on what software you choose to install, or if things go wrong
# during the installation process, it's possible that other questions may
# be asked. You can preseed those too, of course. To get a list of every
# possible question that could be asked during an install, do an
# installation, and then run these commands:
#   debconf-get-selections --installer > file
#   debconf-get-selections >> file

#### Advanced options
### Running custom commands during the installation
# d-i preseeding is inherently not secure. Nothing in the installer checks
# for attempts at buffer overflows or other exploits of the values of a
# preconfiguration file like this one. Only use preconfiguration files from
# trusted locations! To drive that home, and because it's generally useful,
# here's a way to run any shell command you'd like inside the installer,
# automatically.

# This first command is run as early as possible, just after
# preseeding is read.
# d-i preseed/early_command string anna-install some-udeb
# This command is run immediately before the partitioner starts. It may be
# useful to apply dynamic partitioner preseeding that depends on the state
# of the disks (which may not be visible when preseed/early_command runs).
# d-i partman/early_command \
#       string debconf-set partman-auto/disk "\$(list-devices disk | head -n1)"
# This command is run just before the install finishes, but when there is
# still a usable /target directory. You can chroot to /target and use it
# directly, or use the apt-install and in-target commands to easily install
# packages and run commands in the target system.
# d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

所感

インストーラの闇は深い....

参考

Ubuntu ServerにCobblerインストール

UbuntuサーバにCobblerをインストールして使ってみる. CobblerからインストールするのもUbuntu

  • 最終更新 2014/05/02

モチベーション

  • Ubuntu Severを何台かインストール・セットアップしたい。一台一台インストールは面倒。
  • どうせなら外から管理しよう。PXEブートの環境用意しなきゃ。
  • CobblerがDHCPやTFTPを良きに管理してくれるらしい。使ってみよう。

Install

$ sudo apt-get install cobbler cobbler-web

チェック

$ sudo cobbler check

追加しろと言われるので,,,,

$ sudo apt-get install debmirror

dhcpdのインストール

どのdhcp入れるのが良いかは詳しくない.

sudo apt-get install isc-dhcp-server

dhcpの設定変更

Cobblerの設定するとdhcp側の設定を変えなくても勝手に反映される. ルーティングとかDNSとかしないのでコメントアウトしてある.

$ sudo vi /etc/cobbler/dhcp.template

# ******************************************************************
# Cobbler managed dhcpd.conf file
#
# generated from cobbler dhcp.conf template ($date)
# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
# overwritten.
#
# ******************************************************************

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

subnet 192.168.0.0 netmask 255.255.255.0 {
#     option routers             192.168.0.1;
#     option domain-name-servers 192.168.0.1;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.0.100 192.168.0.254;
     filename                   "/pxelinux.0";
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                192.168.0.2;
}

いろいろ設定

以下の3点を設定

$ sudo vi /etc/cobbler/settings

- manage_dhcp: 0
+ manage_dhcp: 1
next_server: 192.168.0.2
server: 192.168.0.2

サービス再起動

$ sudo service cobbler restart
$ sudo cobbler sync

チェック

$ sudo cobbler check

ユーザ追加

$ sudo htdigest /etc/cobbler/users.digest "cobbler" cobbler

ISOファイルのマウント.ループバックな感じで

$ sudo mount -o loop [isoファイル] /mnt

cobblerへimport

$ sudo cobbler import --name=ubuntu-server --path=mnt --breed=ubuntu

webで確認

http://192.168.0.2/cobbler_web/

preseed(kickstart)の編集

preseedの作成.中身の保証はしない.

apt-mirrorが前の日記のものを参照するようになっている.

d-i     debian-installer/locale string en_US.UTF-8
d-i     debian-installer/splash boolean false
d-i     console-setup/ask_detect        boolean false
d-i     console-setup/layoutcode        string us
d-i     console-setup/variantcode       string 

d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Configure network manually

d-i     clock-setup/utc boolean true
d-i     partman-auto/method string regular
d-i     partman-lvm/device_remove_lvm boolean true
d-i     partman-lvm/confirm boolean true
d-i     partman/confirm_write_new_label boolean true
d-i     partman/choose_partition        select Finish partitioning and write changes to disk
d-i     partman/confirm boolean true
d-i     partman/confirm_nooverwrite boolean true
d-i     partman/default_filesystem string ext3
d-i     clock-setup/utc boolean true
d-i     clock-setup/ntp boolean true
d-i     clock-setup/ntp-server  string ntp.ubuntu.com
d-i     base-installer/kernel/image     string linux-server
d-i     passwd/root-login       boolean false
d-i     passwd/make-user        boolean true
d-i     passwd/user-fullname    string ubuntu
d-i     passwd/username string ubuntu
d-i     passwd/user-password-crypted    password $6$.1eHH0iY$ArGzKX2YeQ3G6U.mlOO3A.NaL22Ewgz8Fi4qqz.Ns7EMKjEJRIW2Pm/TikDptZpuu7I92frytmk5YeL.9fRY4.
d-i     passwd/user-uid string 
d-i     user-setup/allow-password-weak  boolean false
d-i     user-setup/encrypt-home boolean false
d-i     passwd/user-default-groups      string adm cdrom dialout lpadmin plugdev sambashare

d-i mirror/country string manual
d-i mirror/http/hostname string 192.168.0.3
d-i mirror/http/directory string /ubuntu
#d-i mirror/suite string precise
d-i mirror/suite string trusty
d-i mirror/udeb/components multiselect main, restricted, multiverse, universe

d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/multiverse boolean true
d-i apt-setup/services-select multiselect security 
d-i apt-setup/security_host string 192.168.0.3
d-i apt-setup/security_path string /ubuntu

d-i     debian-installer/allow_unauthenticated  string false
d-i     pkgsel/upgrade  select safe-upgrade
d-i     pkgsel/language-packs   multiselect 
d-i     pkgsel/update-policy    select none
d-i     pkgsel/updatedb boolean true
d-i     grub-installer/skip     boolean false
d-i     lilo-installer/skip     boolean false
d-i     grub-installer/only_debian      boolean true
d-i     grub-installer/with_other_os    boolean true
d-i     finish-install/keep-consoles    boolean false
d-i     finish-install/reboot_in_progress       note 
d-i     cdrom-detect/eject      boolean true
d-i     debian-installer/exit/halt      boolean false
d-i     debian-installer/exit/poweroff  boolean false
d-i     pkgsel/include string openssh-server

preseedのセットアップ

Webでセットしてセーブ

sync

$ sudo service cobbler restart $ sudo cobbler sync

試す.

とりあえず,インストール始まればおk

デフォルトの変更

上記の設定では何も触らないと(local)が選択され,PXEブートが開始されない. デフォルトを変更する

$ sudo cobbler system add --name=default --profile=ubuntu1404-server-amd64
$ sudo cobbler sync

もちろん"ubuntu1404-server"には自分がデフォルトに設定したいProfileの名前が入る.

MACアドレスを指定し,個別自動インストール

  • 上記のname部分をMACアドレスにすることで個別にprofileを設定することができる.
$ sudo cobbler system add --name=00:00:00:00:00:01 --profile=ubuntu1204-server-amd64
$ sudo cobbler sync

その他設定いろいろ

$ sudo cobbler system edit --name=hogehoge-server --netboot-enabled=1
  • 設定の確認は以下のコマンド
$ sudo cobbler report

Reference

apt-mirrorをたてる

モチベーション

  • ローカルでPXEブートしたい.外にはつなぎたくない.でもapt-mirror....
  • そうだ、自前でローカルにapt-mirrorを立てよう

install

$ sudo apt-get install apt-mirror

configuration

面倒なので全部ミラーした. 12.04と14.04の両方のミラーが欲しいので,preciseとtrustyの2種類を作成する. deb-i386の行はNot Foundが出るのが気に入らないので追加した. PXEブート等を行う際にはdebian-installerのミラーも必要なので注意.

$ sudo vi /etc/apt/mirror.list

############# config ##################
#
set base_path    /var/spool/apt-mirror
#
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh
set defaultarch  amd64
set postmirror_script $var_path/postmirror.sh
set run_postmirror 1
set nthreads     4
set _tilde 0
#
############# end config ##############

# 12.04(precise)
deb http://jp.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse
# debian installer here
deb http://jp.archive.ubuntu.com/ubuntu precise main/debian-installer restricted/debian-installer

deb-i386 http://jp.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse
# debian installer here
deb-i386 http://jp.archive.ubuntu.com/ubuntu precise main/debian-installer restricted/debian-installer

deb-src http://jp.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse


# 14.04(trusty)
deb http://jp.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb http://jp.archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
# debian installer here
deb http://jp.archive.ubuntu.com/ubuntu trusty main/debian-installer restricted/debian-installer

deb-i386 http://jp.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb-i386 http://jp.archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
# debian installer here
deb-i386 http://jp.archive.ubuntu.com/ubuntu trusty main/debian-installer restricted/debian-installer

deb-src http://jp.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse

clean http://jp.archive.ubuntu.com/ubuntu

apt-mirror作成

12.04と14.04,さらに共にamd64i386を用意するので必要なストレージ容量は250GB以上.

でも偉い人が言ってた.ストレージなんてタダみたいなもんだと.

終了に数時間かかります.

$ sudo apt-mirror

自動更新

最後の行のコメントアウトを外しただけ.毎朝4時に更新するらしい.

$ sudo vi /etc/cron.d/apt-mirror

#
# Regular cron jobs for the apt-mirror package
#
0 4     * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var\
/cron.log

 公開

  • Install apatche2

$ sudo apt-get install apache2

  • httpの設定

$ sudo ln -s /var/spool/apt-mirror/mirror/jp.archive.ubuntu.com/ubuntu /var/www/ubuntu

Apacheが2.4系だった場合

  • Ubuntu13.10からapt-getで入るApacheが2.4系になり,上記の操作のみでは公開できない.
  • Apacheは詳しくないので,Apache2.2系の設定のそれっぽい箇所を2.4のそれっぽいところにコピペしたら動作した.このため,アクセス制御の書式が2.2に準じており,美しくない.あとで治す.
  • セキュリティ的に危ないので,外部には公開しないように注意.

  • /etc/apache2/sites-enabled/000-default.conf を修正

- DocumentRoot /var/www/html
+ DocumentRoot /var/www
+ <Directory />
+        Options FollowSymLinks
+        AllowOverride None
+ </Directory>
+ <Directory /var/www/>
+        Options Indexes FollowSymLinks MultiViews
+        AllowOverride None
+        Order allow,deny
+        allow from all
+ </Directory>

終わり.

Reference