/boot/config.txt の末尾に以下を追加
dtoverlay=i2c-sensor,bme280
再起動後
/sys/bus/iio/devices/iio:device0 以下に気温,気圧,湿度に対応するファイルができていればOK
/boot/config.txt の末尾に以下を追加
dtoverlay=i2c-sensor,bme280
再起動後
/sys/bus/iio/devices/iio:device0 以下に気温,気圧,湿度に対応するファイルができていればOK
Sakura VPSにおいてあるマシンから、自ドメイン宛にメールを送信した際、
Sakura側のmtaとして使っているexam4に以下のログが残っていたので調査
(送信後,5分ほど経過してから受信していたので、何かおかしいんだろうなと
思ってはいたものの放置してた。)
2017-10-10 08:31:05 1e1hQz-000487-Cd H=mta [mta ipv6 addr] TLS error on connection (gnutls_handshake): timed out
結果として,根本的な原因は不明なままだが,
mtaへipv4で接続すれば,見た所はエラーは解消した為,
dnsのエントリからmtaのAAAAレコードを削除することで対処した。
追記:
自ドメイン側でipv6 Path MTU Blackholeを発生させていたことが原因でした.
ルータの設定を見直して対処完了です。恥ずかしい x)
以下は、調査履歴と泣き言。
ansible 2.4 での import_tasks の探索順
playbook ... (0) カレントディレクトリ + import.yml ... (I0) + roles + role_a + tasks - main.yml ... (1) - import.yml ... (I1) + handlers - main.yml ... (2) - import.yml ... (I2)
(1)でimport_tasksを実行 -> (I1) が優先, 無ければ(I0)
(2)でimport_tasksを実行 -> (I2) が優先, 無ければ(I1), (I0)の順で探索
配置がややこしくなるので、handlers以下にはmain.ymlだけを置いて
タスクはtasks以下に配置するのがよさげ.
private docker registry のイメージ管理を行いたいので自前でイメージ管理スクリプトの作成
-> とりあえず作った 要python3 オレオレ仕様
https://github.com/mokemoke88/docker_reg_helper
自前ビルドしたDockerイメージを、registryに登録する際の手順を考える
今の所の想定
手元でビルド -> <image名>:build(local)
Jenkins で ビルド ( master or releaseブランチは自動ビルド対象から外しておく)
<registryパス>/<image名>:gitブランチ名 を registryからpull
<image名>:gitブランチ名-日付-ビルド番号 でビルド
<registryパス>/<image名>:gitブランチ名 でtaggingして、registryへpush
最終成果物は個別で作成
git にtagging (0.0.1 とか)
<registryパス>/<image名>:latest を registry から pull
<image名>:release-日付-ビルド番号 でビルド
<registryパス>/<image名>:<gitのtag> で tagging して、registryへpush
<registryパス>/<image名>:latest でtagging して、registryへpush
ゴミがいっぱい残りそうなのと、最終成果物の生成がうまくいきそうになくて、もやもやする。
やってみたら、ダラダラ面倒だったので、メモ
デフォルトで導入したままだと、unix socketでしかlistenしていないのでtcpでもlistenするようにする.
tcpでlistenする際、sslでの認証が必要になるので、ssl証明書やら、キーも作成する.
(といっても公式やらに書いていることやるだけ)
認証局の秘密キーと公開キーを作成
[認証局秘密キー ca-key.pem] $openssl genrsa -aes256 -out ca-key.pem 4096 (パスフレーズの問い合わせがあるので、入力)
[認証局公開キー(証明書) ca.pem] $openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem (認証局秘密キーのパスフレーズ入力) (Common Name の入力で、ホストのFQDNを入力)
サーバ鍵と証明書署名要求の作成
[サーバ鍵 server-key.pem] $openssl genrsa -out server-key.pem 4096
[証明書署名要求 server.csr] $openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr ($HOSTは、対象のFQDN)
[証明書の追加情報 extfile.cnf] $echo subjectAltName = IP:www.xxx.yyy.zzz,IP:127.0.0.1 > extfile.cnf (www.xxx.yyy.zzzは対象のIPアドレス)
サーバ証明書の作成
[認証局署名付きサーバ証明書 server-cert.pem] $openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem ¥ -CAcreateserial -out server-cert.pem -extfile extfile.cnf (出力メッセージのsubject=/CN=FQDN が証明書署名要求で使ったFQDNになっていることを確認) (認証局秘密キーのパスフレーズの問い合わせがあるので入力)
クライアント鍵と証明書署名要求の作成(docker-machine側で使用)
[クライアント鍵 key.pem] $openssl genrsa -out key.pem 4096
[証明書署名要求 client.csr] $openssl req -subj '/CN=client' -new -key key.pem -out client.csr
[クライアント認証用の追加設定ファイル extfile.cnf] $echo extendedKeyUsage = clientAuth > extfile.cnf
認証局署名付きクライアント証明書の作成
[認証局署名付きクライアント証明書 cert.pem] $openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem ¥ -CAcreateserial -out cert.pem -extfile extfile.cnf (認証局秘密キーのパスフレーズの問い合わせがあるので入力)
証明書署名要求ファイルは必要なくなったので、削除。
$rm -v client.csr server.csr extfile.cnf
鍵を本人しか触れないようにパーミッション変更
$chmod -v 400 ca-key.pem key.pem server-key.pem
証明書は変更できないように書き込み権限を落としておく
$chmod -v 0444 ca.pem server-cert.pem cert.pem
作成したサーバ鍵、証明書、認証局証明書を/etc/docker以下に移動
$mv ca.pem server-cert.pem server-key.pem /etc/docker/
dockerデーモンの起動設定はsystemdで制御されているので,デフォルト設定ファイル/lib/systemd/system/docker.serviceを/etc/systemd/system/以下にコピーしてから編集
$cp /lib/systemd/system/docker.service /etc/systemd/system/
[変更前] ExecStart=/usr/bin/dockerd -H fd:// [変更後] ExecStart=/usr/bin/dockerd ¥ --tlsverify ¥ --tlscacert=/etc/docker/ca.pem ¥ --tlscert=/etc/docker/server-cert.pem ¥ --tlskey=/etc/docker/server-key.pem ¥ -H fd:// ¥ -H tcp://0.0.0.0:2376
[変更前] ExecStart=/usr/bin/docker -H fd:// [変更後] ExecStart=/usr/bin/docker ¥ --tlsverify ¥ --tlscacert=/etc/docker/ca.pem ¥ --tlscert=/etc/docker/server-cert.pem ¥ --tlskey=/etc/docker/server-key.pem ¥ -H fd://
/etc/systemd/system/docker-tcp.socket を以下の内容で作成
[Unit] Description=Docker Soccer for the API [Socket] ListenStream=2376 BindIPv6Only=both Service=docker.service [Install] WantedBy=socket.target
(2017.02.06 更新)
systemdに設定の変更を教え込んで、デーモン再起動
$systemctl daemon-reload $systemctl stop docker $systemctl enable docker-tcp.socket $systemctl start docker-tcp.socket $systemctl start docker
Debian側、これにて終了。続いてMac(Docker-machine)側
Mac(Docker-machine)側の設定
docker-machineに新規マシン登録
$docker-machine create -d "none" --url tcp://www.xxx.yyy.zzz:2376 DOCKER_HOST (www.xxx.yyy.zzzはdebianのIPアドレス) ($DOCKER_HOSTはdocker-machineに登録する名前)
~/.docker/machine/machines/以下にDOCKER_HOSTなディレクトリが作成され、設定ファイル config.jsonが生成されているので、とりまディレクトリに移動
$cd ~/.docker/machine/machines/DOCKER_HOST
先に生成したクライアント秘密キー, 証明書,認証局証明書(key.pem, cert.pem, ca.pem)を何とかして、ここにコピー
docker-machineがコピーしたファイルを見るようにconfig.jsonを変更
"AuthOptions": { "CertDir": "/Users/hogehoge/.docker/machine/certs", "CaCertPath": "/Users/hogehoge/.docker/machine/machines/DOCKER_HOST/ca.pem", "CaPrivateKeyPath": "", "CaCertRemotePath": "", "SeverCertPath": "", "ServerKeyPath": "", "ServerCertRemotePath": "", "ServerKeyRemotePath": "", "ServerCertSANS": [], "ClientKeyPath": "/Users/hogehoge/.docker/machine/machines/DOCKER_HOST/key.pem", "ClientCertPath": "/Users/hogehoge/.docker/machine/machines/DOCKER_HOST/cert.pem", "StorePath": "/Users/hogehoge/.docker/machine/machines/DOCKER_HOST" }
docker-machine ls とかして、接続できているか、確認
$docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS DOCKER_HOST - none Running tcp://www.xxx.yyy.zzz:2376 v1.13.0
バージョンが表示されていれば、とりま動作しているかと思われる。
そして、息切れ。以上。
コピー元に移動しておいて
sudo tar cpvf - . | sudo tar xpvf - -C (コピー先)
docker公式そのまんまだけども。
事前に必要になるパッケージインストール
>sudo apt install curl >sudo apt install apt-transport-https >sudo apt install ca-certificates >sudo apt install software-properties-common
レポジトリ用のgpgキーを取得、登録
>curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -
OKとか出る。
一応指紋確認
>apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
dockerのレポジトリ追加
>sudo add-apt-repository ¥ "deb https://apt.dockerproject.org/repo/ ¥ Debian-$(lsb_release -cs) ¥ main"
パッケージリストを更新して、ぶっこむ
>sudo apt update >sudo apt install docker-engine
消すときは
>sudo apt purge docker-engine >sudo rm -rf /var/lib/docker
自動起動を停止する
>sudo systemctl disable docker
自動起動する
>sudo systemctl enable docker
いちいちdocker弄るのにsudoすんのがウゼェ場合
>sudo groupadd docker >sudo usermod -aG docker $USER
M-x package-list-packages
U x
ターミナルから
LANG=C xdg-user-dirs-gtk-update
仮想マシンをシャットダウンした後、bootloader情報が飛ぶみたいなので、無理やり起こす
とりま何とか立ち上げる.
デフォルトのbootloaderはboot/bootx64.efiで動くようなので、以下のようにbootloaderをコピーしてでっち上げる.
sudo su - cd /boot/efi/EFI cp -a ubuntu boot cd boot mv grubx64.efi bootx64.efi sync;sync;sync; reboot