Type-Zer0のブログ

趣味について垂れ流す場所

VagrantでAnsible 実践ガイド を試してみるその壱

Ansible 始めてみる

前々から学習しようと思っていたAnsible
なかなか腰が重かったけれど腰を据えてやってみよう、というわけで試してみる

環境・教材

  • 教科書
    Ansible実践ガイド第2版
    amzn.to
    作者の北山晋吾さんのQiitaに詳しい概要があるのでチェック qiita.com

  • 環境
    実行環境
    OS:Ubuntu 19.04
    Ansible: 2.7.10
    Vagrant: 2.2.3

$cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=19.04
DISTRIB_CODENAME=disco
DISTRIB_DESCRIPTION="Ubuntu 19.04"

$ansible --version
ansible 2.7.10
python version = 2.7.16 (default, Apr  6 2019, 01:42:57) [GCC 8.3.0]

$vagrant -v
Vagrant 2.2.3

下準備

実際にやってみる

この記事ではますはじめに ’2-3 Ansibleの動作確認’をやってみることとする
* Vagrantの準備
まず作業フォルダでVagrantを使えるようにする
仮想マシンは書籍に合わせてCentOSを用いることにした

$vagrant init  centos/7
$ls
Vagrantfile

これでVagrantによってVMを立てることが可能になる
* Ansibleで操作する用意
AnsibleによってVagrantを使うにはVagrantfileに記述する必要があるみたい
inventryはVagrantが生成してくれるので個別に書く必要はない(そしてそのほうがノード間でのアクセスも容易)

Vagrant.configure("2") do |config|
  config.vm.define "test1" do |node|
    node.vm.box = "centos/7"
    node.vm.hostname = "test1"
    node.vm.network :private_network, ip: "192.168.0.101"
  end
  
  config.vm.define "test2" do |node|
    node.vm.box = "centos/7"
    node.vm.hostname = "test2"
    node.vm.network :private_network, ip: "192.168.0.102"
  end

#Ansible 
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "test_playbook.yml"
    ansible.groups = {
            "test_servers" => ["test1", "test2"]
    }
  end
end
---
- hosts: test_servers
  tasks:
  - name: create directory
    file:
       path: /home/vagrant/tmp
       state: directory 
       owner: vagrant
       mode: 0755

  - name: copy file
    copy:
       src: /etc/hosts
       dest: /home/vagrant/tmp/hosts
       owner: vagrant
       mode: 0644

note
config.vm.define "ホスト名" do |node| を複数記述することで複数同時にVMを作成、起動できる

ansible.groups = セクションにグループ名と所属させるホストを記述することでinventryにも同様に記述されグループごとにplaybook指定することができる

  • 実際に動かしてみる
    $vagrant up で記述ミスがなければ書いたとおりの構成になり、かつAnsibleによってplaybookの内容が実行される
$ vagrant up 
Bringing machine 'test1' up with 'virtualbox' provider...
Bringing machine 'test2' up with 'virtualbox' provider...
==> test1: Importing base box 'centos/7'...
==> test1: Matching MAC address for NAT networking...
==> test1: Checking if box 'centos/7' version '1902.01' is up to date...
==> test1: Setting the name of the VM: sec2_test1_1557299846266_77551
==> test1: Clearing any previously set network interfaces...
==> test1: Preparing network interfaces based on configuration...
    test1: Adapter 1: nat
    test1: Adapter 2: hostonly
==> test1: Forwarding ports...
    test1: 22 (guest) => 2222 (host) (adapter 1)
==> test1: Booting VM...
==> test1: Waiting for machine to boot. This may take a few minutes...
    test1: SSH address: 127.0.0.1:2222
    test1: SSH username: vagrant
    test1: SSH auth method: private key
    test1: 
    test1: Vagrant insecure key detected. Vagrant will automatically replace
    test1: this with a newly generated keypair for better security.
    test1: 
    test1: Inserting generated public key within guest...
    test1: Removing insecure key from the guest if it's present...
    test1: Key inserted! Disconnecting and reconnecting using new SSH key...
==> test1: Machine booted and ready!
==> test1: Checking for guest additions in VM...
    test1: No guest additions were detected on the base box for this VM! Guest
    test1: additions are required for forwarded ports, shared folders, host only
    test1: networking, and more. If SSH fails on this machine, please install
    test1: the guest additions and repackage the box to continue.
    test1: 
    test1: This is not an error message; everything may continue to work properly,
    test1: in which case you may ignore this message.
==> test1: Setting hostname...
==> test1: Configuring and enabling network interfaces...
==> test1: Rsyncing folder: /home/ripple/study/effectiveAnsible/sec2/ => /vagrant
==> test1: Running provisioner: ansible...
Vagrant has automatically selected the compatibility mode '2.0'
according to the Ansible version installed (2.7.10).

Alternatively, the compatibility mode can be specified in your Vagrantfile:
https://www.vagrantup.com/docs/provisioning/ansible_common.html#compatibility_mode

    test1: Running ansible-playbook...

PLAY [test_servers] ************************************************************

TASK [Gathering Facts] *********************************************************
ok: [test1]

TASK [create directory] ********************************************************
changed: [test1]

TASK [copy file] ***************************************************************
changed: [test1]

PLAY RECAP *********************************************************************
test1                      : ok=3    changed=2    unreachable=0    failed=0   

==> test2: Importing base box 'centos/7'...

(以下略)

無事に作成できた!
vagrant ssh test1 で中に入ってみると、playbookが反映されていることがわかると思う

note: 自動作成されたinventryは ~/study/effectiveAnsible/sec2/.vagrant/provisioners/ansible/inventory にある
中はこんな感じ

 # Generated by Vagrant

test1 ansible_host=127.0.0.1 ansible_port=2222 ansible_user='vagrant' ansible_ssh_private_key_file='/home/ripple/study/effectiveAnsible/sec2/.vagrant/machines/test1/virtualbox/private_key'
test2 ansible_host=127.0.0.1 ansible_port=2200 ansible_user='vagrant' ansible_ssh_private_key_file='/home/ripple/study/effectiveAnsible/sec2/.vagrant/machines/test2/virtualbox/private_key'

[test_servers]
test1
test2

手動で作成する必要がなく、ノード間の疎通も取れるのでお手軽みたい
今回は最初の章なので、複雑なことはしてないようだけれど、Vagrantを用いることで個別にVMを構築、設定する手間が省けるのでぜひ使えるようになりたいところ

最後は$ vagrant destroy -fで環境を消しておしまい

続きはまた後日

バースデーワンダーランド をみた感想

バースデーワンダーランド を見てきた

全体的にはまあありがちな冒険モノ
絵は綺麗

声優

  • アカネ
    棒。わかっていたけど気になって仕方ない
    声優ですらないのをメインに据えるのが流行っているのかなんなのか
    もう少しどうにかならないのか

  • チィ
    棒。ダブルヒロインダブル棒。 某花火がなんたら も酷かったけどそれよりはまだマシだったから耐えられたかも

  • ミドリ
    気にならなかった。 出番が少なかったのもあるのかもしれないけどこなれている感じはした

  • ヒポクラテス
    良かった。真面目な感じかと思いきやギャグ要員だったのがよかった。

以下本職声優さんたち、格の違いを聞かされてしまった
- ピポ
最高だった。東山奈央ちゃんかわいい大好き
もはや奈央ちゃんのためにこの映画を見たと言っても過言ではない。

  • ザン・グ
    落ちが読めていたキャラ
    全体的に良い味を出していてとても良かった

  • ドロポ
    わかりやすいキャラ。憎めない心の優しい奴って感じ

以下ネタバレあるかも

全体的には、主人公が旅に出る→いろいろくぐり抜けて危機を救う→戻ってくるというわかりやすく安心できているストーリーライン
伏線というか、読み解くヒントがたくさん残してあって理解はしやすい
お母さんの秘密は冒頭から意味ありげなマットで示唆されている

  • <冒頭>
    アカネが学校をサボるところから。
    お腹痛いっていう娘に出す食事では無いと思うけどずる休みだって見切っていたんだろうなさすが母
    学校の回想で、何故虐められていたのか、どうしてそうなったのか辺りがいまいちつかめないまま終わってしまったのが残念
    もう少し掘り下げても良かった気はする

  • <叔母さん家>
    不思議アイテム屋さんで不思議アイテムを見つけて不思議な世界に行くという導入
    テンポは良かったけど説明投げっぱなしで連れて行くのはもはやお約束
    時を司る蜘蛛さんも、謎空間も余り意味は無かった気もしないでもない

  • <不思議の世界>

  • こんにちは世界 来て早々変な場所に出て変な生物に襲われる
    自転車が出てきたり、戦車のようなモノが出てきたりこの世界のことが少しわかり始める
    まず人がこいでるモノを奪ったり危ないなとは思いつつ、あのクレーンの動力がどうなっているのか気になる
    見た感じ戦車は蒸気機関で動いているのだが、クレーンは油圧かなんかなのだろうか それにしては機敏だったなぁと
    戦車モドキは超新地旋回ができたり存外先進的だけれども、蒸気機関でああいった瞬発力をどう出しているのかは不明
    助けた人のお使いをしたりなんだかんだ出発するという流れはお約束

  • 旅路
    蒸気機関乗用車、なのは良いのだがチョーク式っぽくていまいち仕組みが不明 見た感じ変速機もなさそうなのでアクセル操作だけで速度調節をしているのだろうか
    エアコンはなさそうなので気温変化には良さそう ただ寒いところは蒸気機関なのだから後ろから暖かくなりそうなモノ
    世界の不思議な景色を冒険するというのは良かった 綺麗な映像が生えていたと思う

3.目的地
セーターコンテストとは何だったのか(最後に金賞は取れていたけど一瞬映るだけ)
いろいろと雑過ぎてこの部分に関してはよくわからなかった
しきりに「ミドリの女王」とか何とか言っていたけどどう見てもお母さんです本当にありがとうございました。 というか気付よアカネ
最後は主人公が王子様の心を解かしてハッピーエンド、世界の危機を救って元の世界に戻ります

  • <.エピローグ > 日常にもどって大切なモノに気づく、少女はまた一歩大人になったのであった
    お母様も娘が自分と同じ冒険をしたと気づいたのであった

疑問点

・ 戦車
蒸気機関であの瞬発力はどうやって出しているのか?
- 大砲
砲自体はライフリングもないので滑腔弾なのだろうと推測
弾頭もAPDSっぽくはある
後込め式なのは良いとして閉鎖機はあれでいいのだろうか
というか井戸を破壊するなら徹甲弾の類いではなく榴弾を用いるべきでは?
後あんな不純物がある鉄で作ったら曲がるし撃ったら爆発しそう

・車
途中で超速だしてましたけど、あんなんやったらこわれますよね

まとめ

ストーリーラインは綺麗だけれども説明不足が多いのは否めない
アカネの同級生、セーターの件、いくつか投げっぱなしで慌ただしく物語が終わった感は否めない 声優は気になるのが一部の人だけなら良いとしてもやはりもう少し何とかしてほしかった
周りのキャラがしっかりしていて救われていた部分は大いにありそう
全体的に映像は良く完成度は高いので満足はした

後は東山奈央ちゃんがもっと出てくれれば文句なしだった。 良い映画でした。

Windows10 でコマンド型ランチャ Woxを試してみる

コマンド型ランチャを試してみる

以前Hainを試してみるという記事をかいたけれど
[http://type-zer0.hatenablog.com/entry/2019/03/03/Windows10%E3%81%A7%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%9E%8B%E3%83%A9%E3%83%B3%E3%83%81%E3%83%A3_Hain%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B_1:embed:cite]

私の環境では、CPU使用率が高めになってしまっていたので、代替を探してみた
FenrirとかもあったけれどWoxというのが割とよさそうだったので試してみた

使用してみる

  • インストール
    インストールはGithubにあるexeをつかう。
    Python3はすでにインストール済みでpathも通してあるはずなのでスルー
    Everything サービスを導入することで検索性があがる模様

  • 設定周り
    起動コマンドはHainと同じくAlt+Spaceに割り当ててみた
    Ubuntu+i3ではWind+Dにしているけれど、競合したりするのでこちらで
    f:id:Type-Zer0:20190402152505p:plain
    スタートアップに追加したり、自動で閉じたりなどの設定周り

プラグインのProgramで、C:\ProgramFiles 以下以外にexeファイルを配置しているフォルダを追加することで検索速度が上がるので必須

設定反映はランチャからrestart wox でWoxの再起動で反映される模様

感想

f:id:Type-Zer0:20190402153050p:plain
CPU使用率はかなり下がった印象
第一目標は達成したかな
システムコマンドやらなにやらスクリプトも走らせられるようなので使っていく上で見つけられたらよいかな


参考

GitHub - Wox-launcher/Wox: Launcher for Windows, an alternative to Alfred and Launchy. ソフト・ファイル・フォルダなどをまとめて検索・即起動できる無料のWindows用ランチャーソフト「Wox」 - GIGAZINE Windows用ランチャー『 Wox 』の導入と便利な使い方 | Refills

Thinkpad A285 にUbuntuをセットアップ

やること

少し前にThinkpad A285を購入しました。
Windows側のセットアップは type-zer0.hatenablog.com

でやったので、次は普段遣い用のLinux(Ubuntu) の設定をしていく。
いろいろ考えたけれど、使い慣れてるUbuntuをベースにカスタマイズすることに決定。
最新版のUbuntu18.10をいれてちょめちょめしていく予定。
セットアップ過程をメモがてらに残していく。
特に記述がない場合は、apt install hogeで入れている。

Ubuntuのインストール

基本はデフォルトのママ。
ストレージ構成だけちょっといじって、swapは無しで。
Winとの共有ディスクは悩んだ末NTFSでいいやと言うことになった。

必須設定

何よりもまずホームディレクトリ内の日本語ディレクトリを英語化。
LANG=C xdg-user-dirs-gtk-update

CpasをCtrlにする
$sudo vim /etc/default/keyboard XKBOPTIONS="ctrl:nocaps"

タッチパッド無効化

$ xinput list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech M570                             id=13   [slave  pointer  (2)]
⎜   ↳ Logitech M570                             id=14   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=17   [slave  pointer  (2)]
⎜   ↳ TPPS/2 Elan TrackPoint                    id=18   [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Power Button                                id=8    [slave  keyboard (3)]
    ↳ Sleep Button                                id=9    [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C             id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=16   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                      id=19   [slave  keyboard (3)]
    ↳ Topre REALFORCE 91 JP Consumer Control      id=10   [slave  keyboard (3)]
    ↳ Topre REALFORCE 91 JP                       id=11   [slave  keyboard (3)]
    ↳ Topre REALFORCE 91 JP Keyboard              id=12   [slave  keyboard (3)]

$ xinput disable 17

上記だとUSBキーボードをつないだり外したりする環境だとダッチパッドのidが変わってしまってスクリプト書いてもうまくいかない模様
なので/usr/share/X11/xorg.conf.d 以下に記述して起動時スクリプトとして無効化する。
ディレクトリ内にはいくつかあるはずなので、hoge-synaptics.confというのを探す。
中身を見るとファイルを直接編集するな、コピーしてからやれという指示があるようなので起動順序を一つあとにして(70-hogeだったら71-hogeのように)末尾に追加する

Section "InputClass"
        Identifier "no need for accelerometers in X"
        MatchProduct "SynPS/2 Synaptics TouchPad"
        Option "Ignore" "on"
EndSection

編集ソフトをviにする
$sudo update-alternatives --set editor /usr/bin/vim.basic

必要ソフトのインストール

順次必要なものを入れていく。Ubuntuなので有名ソフトの多くはDevパッケージがあるのでそそれをベースに入れていく。

ブラウザ

デフォルトはFirefox,あとVivaldi(Snapshot)を入れる。

メディア系

動画再生はVLC、音楽はAudicious
漫画ビューワ MComix

  • 電子書籍:Kindle
    Wineでインストールする。
    $sudo apt install wine
    その後古いバージョンのexeを落としてくる。
    kindle-for-pc-1-17-44183.exe wine kindle-for-pc-1-17-44183.exe
    インストールが出来る。
    日本語フォントにする。
$vim font-replace-takao.reg
REGEDIT4
 
[HKEY_CURRENT_USER¥Software¥Wine¥Fonts¥Replacements]
"MS Gothic"="Takaoゴシック"
"MS Mincho"="Takao明朝"
"MS PGothic"="Takao Pゴシック"
"MS PMincho"="Takao P明朝"
"MS UI Gothic"="TakaoExゴシック"
"MS ゴシック"="Takaoゴシック"
"MS 明朝"="Takao明朝"
"MS Pゴシック"="Takao Pゴシック"
"MS P明朝"="Takao P明朝"
:set fileencoding=sjis
:wq

$wine regedit

ツール類

Font

mkdir ~/.fonts
Ricty を導入する。
www.rs.tus.ac.jp

$sudo cp migu-xxx.ttf Inconsolate-xxx.ttf Ricty* /usr/share/fonts
$fc-cache -fv
$gconftool-2 --set /apps/gnome-terminal/profiles/Default/font --type string "Ricty Regular 12"

カスタマイズ

  • 指紋認証
    A285では今の所FingerPrintGUIは使えない模様
    他のソフトも試してみる

  • デスクトップ
    i3wm、conky、rofi、polybar

モニタバックライト管理:brightnessctl AUR (en) - brightnessctl A285 では、バックライト制御にxbacklight は使用できない模様。
ASUS GL702ZC - ArchWiki なので代替としてbrightnessctlを使う。 以下の作業を終えたらi3のconfigに入れ込む

適当な作業フォルダで  
$git clone https://github.com/Hummer12007/brightnessctl
$cd brightnessctl
$make
$sudo make install

#インストール作業終わり udevルール追加
$sudo vim /etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl0", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl0", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

#グループ追加
$sudo adduser USER video

#非ルートユーザでもコマンドできるようにする
$sudo chmod u+s /usr/bin/brightnessctl

#調整できるかテスト
$brightnessctl s +10
Updated device 'amdgpu_bl0':
Device 'amdgpu_bl0' of class 'backlight':
    Current brightness: 79 (30%)
    Max brightness: 255

$ brightnessctl s 10-
Updated device 'amdgpu_bl0':
Device 'amdgpu_bl0' of class 'backlight':
    Current brightness: 69 (27%)
    Max brightness: 255
  • fish

  • Kali
    Kali Linuxで使われているパッケージをUbuntuでも利用するために導入する。

その他

Slack,Discord,Skype, fcitx-mozc:LANG-supportでfcitxを選択する。

参考サイト

https://blog.scimpr.com/2017/02/05/ubuntu-desktopで指紋認証〜fingerprint-gui/

Kindle
ubuntuにKindle for PCをインストールする方法 – MY ROBOTICS

タッチパッド無効 Ubuntu 11.10 install memo - Forever Undecided

(随時追記していく)

Windows10 でコマンド型ランチャ Hain を試してみる

ランチャ

Ubuntuではrofiというカスタムランチャを使ってプログラムを起動している。
Windows10で似たようなソフトが無いかと検索していたところHainを使ってみる

以前はOrchsを使っていたけれど、これだけだと検索性が悪いなと思っていていた
もちろん登録済みのものをすぐに呼び出すには便利なので引き続き利用していく

導入

github.com GithubにあるReleaseから落としてくる
インストーラで導入は完了、alt+spaceで起動する、プラグインも入るのでお手軽に出来る

設定

Hainはデフォルトでプログラムを検索するのは

f:id:Type-Zer0:20190303082306p:plain
Preferences
ここのようである
CドライブのProgramfiles以外にも置いている人は追加しないと読み込んでくれないみたい
Dドライブなどのパスを書いてうまく行かなかったのでシンボリックリンクを貼って解決した
${USERPROFILE}の下に置くのが良さそうなのでUsersフォルダにリンクを貼ることにする
コマンドプロンプト(管理者)でmklink /D C:\Users\USERNAME\LinkName D:\programs等のようにシンボリックリンクを作成する
Usersフォルダ内にリンクが出来ていることを確認したらHainにファイルパスを指定する
これでCドライブ以外でも呼び出すことが可能になるはず

問題点

CPU使用率がややたかい、起動直後は3割弱、その後は少し落ち着くが 少し問題なので同じようなモノを探してみる予定

追記
PCによって使用率は異なってくるみたい?
A285ではそこまでCPU使用率は高くないがデスクトップでは高めだった
ドライブのパフォーマンスや、CPUなどによって変わってくるのかもしれない
他端末も含めて調査してみる