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のホストで生成した秘密鍵と公開鍵を用いてリモートサーバにアクセスする.
[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に登録
- ジョブ毎の設定
- [設定]
- ビルド環境以下の2つが設定可能となる(上がビルド前,下がビルド後に実行)
- 各設定
- Name : 設定したサーバの名前
- Transfers: 送るファイル,実行するコマンド
- [Add Transfer Set] で実行するサーバ,コマンドを増やす事ができる.
- Tips
- [設定]
pluginを用いない場合のSSHの設定
$ ssh -i <秘密鍵> <リモート先> <実行コマンド>
sudoのパスワードと秘密鍵のパスフレーズを突破する必要があるため,以下の設定を行っておく必要がある.
- sudoのパスワード省略
- visudoで/etc/sudoersに以下の行を追加する.
%sudo ALL=(ALL:ALL) ALL
の下に追記した.
- visudoで/etc/sudoersに以下の行を追加する.
$ 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
基本はサンプルから
- Preseedのサンプルがここ( https://www.debian.org/releases/wheezy/example-preseed.txt )に公開されている.基本はこれを参考にすすめる.コメント中にある$を消すかエスケープしないと動作しない.
- あとこちらのサイトにお世話になりました.感謝. http://www.nofuture.tv/linux/debianautoinstall
ユーザ名/パスワードの変更
- 下記の設定で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
所感
インストーラの闇は深い....
参考
- http://www.nofuture.tv/linux/debianautoinstall
- https://www.debian.org/releases/wheezy/example-preseed.txt
- http://hitsumabushi-pc.blogspot.jp/2011/12/etcshadow.html
- http://qiita.com/wnoguchi/items/9a9092dd23eea88d435f
- http://h50146.www5.hp.com/products/software/oe/linux/mainstream/support/lcc/pdf/edlin_20110804.pdf [PDF]
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
その他設定いろいろ
- ここ( http://blog.glidenote.com/blog/2012/03/16/cobbler-system-add/ )とかここ( http://zinrai.github.io/blog/html/2013/06/22/centos_cobbler_puppet_install.html )にsystem addの設定についていろいろあった.実際の動作は確かめて無い.
system add の他,system editで編集ができるらしい.
以下オプション
pxe_just_onceを有効にする(/etc/cobbler/setting で設定する.デフォルトは1で有効)と登録したsystemは1度しかpxe_bootしない.もう1度インストールしたくなったら以下のコマンドを実行
$ sudo cobbler system edit --name=hogehoge-server --netboot-enabled=1
- 設定の確認は以下のコマンド
$ sudo cobbler report
Reference
- http://www.colinmcnamara.com/setting-up-cobbler-pxe-auto-deployment-for-ubuntu-server-12-04-precise/
- http://ideasnet.wordpress.com/2013/05/31/ubuntu-server-using-cobbler-to-install-ubuntu-12-04lts-mini-in-4-or-more-machines/
- https://www.ibm.com/developerworks/jp/linux/library/l-cobbler/#ibm-pcon
- http://www.asahi-net.or.jp/~aa4t-nngk/pxeinstall.html
- http://zinrai.github.io/blog/html/2013/06/22/centos_cobbler_puppet_install.html
- http://blog.glidenote.com/blog/2012/03/16/cobbler-system-add/
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,さらに共にamd64とi386を用意するので必要なストレージ容量は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>
終わり.