読者です 読者をやめる 読者になる 読者になる

kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Ansible Galaxyでロールの管理 - Playbookの準備

Ansible Galaxyに登録するまでもない
もしくは登録できないようなものでも
Ansible Galaxyでロールを管理したかったので、
その手順を調べました。 今回はとりあえず、ロールを開発するためのPlaybookの準備です。

ロール開発時のPlaybook

最初、Playbookがない状態でどうやって、
ロールを開発していけばよいかとまどいました。
分かってみれば、簡単でダミーのPlaybookを作れば良かったです。

testsディレクトリを使って開発する

ひとつのロールを開発する場合は、testsディレクトリを使ったほうが
すぐに始められるので普段はそうしています。

Ansible Galaxyのinitコマンドを使うと、 testsディレクトリが作成されます。 中身にinventoryとtest.ymlがあるので、これをダミーのplaybookにします。

testsディレクトリが作成されるのはAnsibleのバージョンが2.0以降です。 2.0より前は、自分でダミーのplaybookを作成する必要があります。

tests/test.ymlに手を加える

そのままだと動かないのでちょっと編集します。
ロールのパスだけ直して上げればいいのですが、
最初はVagrant上でlocalhostを対象に実行することが多いので
connection: localも指定しています

@@ -1,5 +1,6 @@
 ---
 - hosts: localhost
+  connection: local
   remote_user: root
   roles:
-    - role-foo2
+    - ../../role-foo

実行してみる

実行してみて下記のようにできたら
あとは、ロールを開発していくだけです。

$ cd path/to/role
$ cd tests
$ ansible-playbook -i inventory test.yml

PLAY [localhost] ***************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0

springの導入時にapplication.rbが見つからない

railsのplugin開発をしていてrspecの速度を上げたくてspringを導入しようとしました。 その時にエラーがでました。 その対処法をメモ。

bundle exec spring binstub rspec

上記コマンドを実行した時に下記のエラーが出ました

Spring was unable to find your config/application.rb file. Your project root was detected at /path/to/plugin, so spring looked for /path/to/plugin/config/application.rb but it doesn't exist. You can configure the root of your application by setting Spring.application_root in config/spring.rb.

pluginなのでapplication.rbはないです。 メッセージに表示されているようにconfig/spring.rb を用意します。

vi config/spring.rb

中身は下記のようなものを書きます。

Spring.application_root = './spec/dummy'
Spring.watch 'app/modles', 'lib'

で下記のように実行すれば使えました。

./spec/dummy/bin/rspec  ./spec/path/to/xxxx_spec.rb

参考

規約系ページで使う単語

自分用メモ
新しくサイトを作るにあたり
下記ページを作ることになりました。

URLとしてどのような単語がいいか迷ったので
いろいろなサービスで調べてみました。
各サービスで使っている単語を抜き出しています。

サービス 特定商取引法に基づく表記 利用規約 プライバシーポリシー
line ebiz terms rules
backlog low terms privacy
カカオトーク ebiz terms privacy
メルカリ tokutei tos privacy
awa asct terms privacy
ブクログ - term privacy
クックパッド - term privacy

CentOS5系にansible2.0のインストール

自分用メモ
ゆえあって、CentOS5系にansible2.0を入れました。
その時のメモです。 pipで普通に入れるだけで、2系が入りました。

依存ライブラリのインストール

必要ないものもありますが、
ついでにいろいろといれました。

yum install -y zlib-devel ncurses-devel sqlite-devel openssl-devel tk-devel bzip2-devel gdbm-devel readline-devel

pythonのアップデート

デフォルトで入っているものは、
2.4なので、2.7系の最新にアップデートします。
2.4も一応残しておきたいのでaltinstallします。

cd /usr/local/src/
wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
tar xvzf Python-2.7.11.tgz
cd Python-2.7.11
./configure --prefix=/usr/local
make
make altinstall

makeの時点で足りないモジュールがあれば下記のように出てきます。
必要に応じて、yumで追加します。

Python build finished, but the necessary bits to build these modules were not found: _bsddb bsddb185 dl imageop sunaudiodev To find the necessary bits, look in setup.py in detect_modules() for the module's name.

パスを通して、デフォルトで2.7を使うように

シンボリックリンクでコマンド作成

cd /usr/local/bin/
ln -s -i python2.7 python
ln -s -i python2.7-config python-config

パスの編集

vi /root/.bashrc

/usr/bin/usr/local/binの優先順を入れ替えます。

- export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
+ export PATH=/bin:/usr/local/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin

再読込して、確認

source /root/.bashrc
python -V #2.7が出てくること

pipのインストール

cd /usr/local/src/
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
python get-pip.py

Collecting pip /tmp/tmpDeRUDv/pip.zip/pip/vendor/requests/packages/urllib3/util/ssl.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning. Downloading pip-8.0.2-py2.py3-none-any.whl (1.2MB)

100% |################################| 1.2MB 348kB/s Collecting setuptools Downloading setuptools-19.7-py2.py3-none-any.whl (472kB) 100% |################################| 475kB 749kB/s Collecting wheel Downloading wheel-0.28.0-py2.py3-none-any.whl (179kB) 100% |################################| 180kB 2.2MB/s Installing collected packages: pip, setuptools, wheel Successfully installed pip-8.0.2 setuptools-19.7 wheel-0.28.0

場所を確認

which pip
#/usr/local/bin/pip

ansibleのインストール

pip install ansible
ansible --version
#ansible 2.0.0.2

参考

ckeditorでデフォルトをアップロードタブに

自分用メモ
ckeditorで、画像挿入ボタンをクリックした時に
デフォルトのタブをアップロードタブに変更する方法

CKEDITOR.on('dialogDefinition', function (event) {
              var dialogName = event.data.name;
              var dialog = event.data.definition.dialog;

              if (dialogName == 'image') {
                  dialog.on('show', function () {
                      this.selectPage('Upload');
                  });
              }
          });

参考

CentOS6.5にnodejsの4系をインストールするときにエラー

nodebrewを使って、CentOS6.5にnodejsの4系を入れようとしたところ
下記が表示されてインストールに失敗しました。

WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++)

nodebrew自体は、この方法であっさりインストールできました。 しかし、

nodebrew install stable

を実行したところで失敗します。
g++のバージョンが低すぎるようです。
いろいろと試行錯誤した挙句、
g++のバージョンを上げることで解決しました。

こちらを参考にバージョンアップします。
その後再度、

nodebrew install stable

を実行したらうまくいきました。

CentOS5にlsyncdをインストール

以前はCentOS6系にインストールしましたが、
今回は5系にインストールした時のメモです。
directモードで動かしてます。
基本的には、6系にインストールした時と
同じ手順でインストールできました。
大きな違いとしては、6系では、version2.1がインストールされますが、
5系では2.0がインストールされることです。
あとは、設定ファイルのsettings部分の書き方を気をつければ、同じように動きました。

lsync依存パッケージのインストール

入っているかどうかの確認

$ yum list installed | egrep "libxml2-devel|lua-devel|lua-static"

luaのインストール

上記確認で、luaが入っていなかったのでインストールします。
luaは、CentOS5系のデフォルトリポジトリにはないので、epelからインストールします。
epelリポジトリを別途追加しておく必要があります。
今回は、この方法リポジトリの追加をしました。

$ sudo yum --enablerepo=epel install lua-devel lua-static

lsyncdのインストール

lsyncdはrpmforgeのリポジトリにあります。 リポジトリ追加を行っていない場合は、別途リポジトリの追加が必要です。

$ sudo yum install -y lsyncd --enablerepo=rpmforge

version 2.0がインストールされました。 こちらの記事によると、
CentOS5系とlsyncdの2.1は相性が悪いらしいので、2.0でよしとしました。

起動オプションの設定

6系と同じ手順

起動ファイルの修正

6系と同じ手順

設定ファイルの作成

6系の方にも書きましたが、
version 2.0ではsettings {の部分をsettings = {として、=でつなげてあげる必要があります。

settings = {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        nodaemon = false,
}
sync{
        default.direct,
        source="/home/vagrant/src/",
        target="/home/vagrant/target/"
}