@ Fukuoka.go & Fukuoka.rb 合同勉強会
Uchio KONDO
Terraform の話をしようと思っていましたが
触れなかった...
......
IAMのDSL gemも作りかけ...
......
@udzura / Uchio KONDO
GMOペパボ技術基盤ティーム
Ruby厨歴5年ぐらい
所属: Fukuoka.rb (って言ってもそろそろ良いはず)
#markdown2inao
ユーザ会だった(?)
Docker
Puppet/Chef
Serverspec
Docker => Go
Puppet/Chef => Ruby
Serverspec => Ruby
やった!!!1
Docker で Puppet/Chef のテストをするよ
プロビジョニングは良いけど、壊れないようにするの結構大変
Chefは激しくバージョンが上がるのでこれもつらい
vagrant up --provision
時間かかr
色々頑張った
各環境用にまっさらなベースコンテナつくったり...
Ruby 2.0.0 のrpmをつくったり...
LTなんで詳細は話さない...(ぇ
昔はinitで全部上げられたらしいけど、今はだめぽ
以前の担当者さんの残したやつをベースに...
RUN yum install -y openssh-server
RUN mkdir /root/.ssh
RUN sed -i s/UsePAM\ yes/UsePAM\ no/ /etc/ssh/sshd_config
RUN echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
RUN ( cd /etc/ssh; \
ssh-keygen -t rsa -f ssh_host_rsa_key -N '' ; \
ssh-keygen -t dsa -f ssh_host_dsa_key -N '' )
ADD ./misc/id_rsa.pub /root/.ssh/authorized_keys
RUN chown root:root /root/.ssh/authorized_keys
RUN chmod 600 /root/.ssh/authorized_keys
そしたら docker run ... $IMAGE_NAME /usr/sbin/sshd -D
でよさげ。ふつうにsshできる
ssh_cmd=" ssh root@$ssh_host -p$port -i./misc/id_rsa -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null"
$ssh_cmd \
FACTER_IN_DOCKER=true \
puppet apply \
--environment=development \
--modulepath=/var/puppet/modules:... \
--color=true \
--detailed-exitcodes \
--evaltrace \
/var/puppet/manifests/site.pp
$ssh_cmd \
IN_DOCKER=true \
chef-solo \
-c /etc/chef-solo.rb \
-j /var/chef/nodes/${role} .json
環境変数によってSSHモードとExecモード分ける
if ENV [ 'FORCE_EXEC' ]
include SpecInfra ::Helper ::Exec
else
include SpecInfra ::Helper ::Ssh
end
ほか、色々細かいハックした... いつかちゃんとまとめるYO
role=$1
$ssh_cmd " cd /var/puppet && FORCE_EXEC=1 CI=1 bundle exec rake spec:${role} "
id=$( docker run ... $IMAGE_NAME /usr/sbin/sshd -D)
# ...
if [ $status -ne 0 ]; then
failed_name=" foobarpj/failed:$BUILD_NUMBER .$( date +%Y%m%d%H%M%S ) "
docker commit $id $failed_name
echo " ****************************************************"
echo " Please check it out -> image_name:tag = $failed_name "
echo " ****************************************************"
fi
if which boot2docker 2> /dev/null; then
vm_name=${2:- boot2docker-vm-vboxfs}
ssh_host=$( boot2docker --vm=$vm_name ip 2> /dev/null )
export DOCKER_HOST=" tcp://$ssh_host :2375"
else
ssh_host=localhost
fi
iptables動かない...
ntpd立ち上がらない...
nrpe立ち上がらな(ry
調査しようにもstraceが立ち上がらな(ry
CAP_SYS_TIME
が許可されない
CAP_SYS_PTRACE
がない
strace: ptrace(PTRACE_TRACEME, ...): Permission denied
...
もしかしたら --privileged
をつけるといいかも? (@tmtms さん)
結構namespaceだのunshareだの出てくる感じに...
今日書いたこと、弊社インフラエンジニア氏の受け売りです...
Docker、かなりカーネルの知識が必要なのでは...
インフラエンジニアの方に色々質問すると良いかも
優秀なインフラエンジニアのいる弊社に入社すると便利
優秀なインフラエンジニアのいる弊社に入社すると便利