Ansible 変数ファイルの読み込みで複数の候補を列挙

Ansibleで外部変数ファイルの読み込み時に
デフォルトを用意しつつ、OS独自の設定も読み込みたい場合に使える技。

  vars_files:
    - "vars/common.yml"
    - [ "vars/{{ ansible_os_family }}.yml", "vars/os_defaults.yml" ]

このように書いておくと、先のファイルが見つかった場合は先のファイルを読み込んでくれて、見つからない場合はos_defaults.ymlを読み込んでくれる。

カテゴリー: Ansible | タグ: , , | コメントする

Ansible 文字列変数定義するならダブルクォーテーションで囲うべし

以下のように定義して、タスクを実行すると必ずSkipされてしまうという謎現象に遭遇していた。

#変数定義
SOME_FLG: True

#実施タスク
-name: SOME_FLG=Trueの時のみ実行
 when: SOME_FLG == "True"

原因は変数定義のTrueの後にスペースが一文字入っていたという凡ミス。
こういったハマリを防ぐためにも、文字列はきちんとダブルクォーテーションで囲うべし。

カテゴリー: Ansible | タグ: , | コメントする

MySQL ERROR 2006 (HY000) at line xxxx: MySQL server has gone away

巨大なインポートデータの時に発生したエラー。どうやらバッファが不足しているらしい。
Webで調べたとおり/etc/my.cnfの設定を変更。
[mysqld]セクションにmax_allowed_packetの列を追加した。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# ここを追加
max_allowed_packet = 1280M

mysqlを再起動して以下のコマンドで確認する。

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
1 row in set (0.00 sec)
カテゴリー: Database, MySQL | タグ: , | コメントする

Linuxで^Mと表示されるCRLFをLFに変換 dos2unix

Windows系のファイルの改行コードはCRLFなので、これをLinuxのviで開くと^Mという記号が目障りである。

viの変換を使ってもいいのだが、便利なコマンドがあるのでそれを入れてしまう。

yum install dos2unix
dos2unix 変換したいファイル名

何も指定しないとファイルを直接書き換えてしまうので注意。
逆にWindowsのCRLFに変換するにはunix2dosを使うこと。

カテゴリー: Linux | タグ: , | コメントする

Ansible MySQLを操作する場合にはリモート側にMySQL-pythonが必要。

MySQLもAnsibleから操作できるのだが、pythonのモジュールが必要だと怒られてしまった。

msg: the python mysqldb module is required

AmazonLinuxならばMySQL-pythonパッケージをインストールすればよい。

しかし、pip-2.7経由でansibleを使っていたのでこれでもダメだったようだ。

次はpip-2.7を使ってインストール

pip-2.7 install MySQL-python
You are using pip version 6.0.8, however version 7.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting MySQL-python
  Downloading MySQL-python-1.2.5.zip (108kB)
    100% |################################| 110kB 4.0MB/s
    sh: mysql_config: コマンドが見つかりません

mysql-develをインストールして再実施。今度はgccがなくてエラー・・

無事コンパイル成功したけど、まだmysqldb moduleがないとのエラー・・・・

pip-2.7 freeze | grep -i mysql
You are using pip version 6.0.8, however version 7.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
MySQL-python==1.2.5

ちゃんとインストールされているのに!よくわからないので撤退しかかるが、
ここで公式ドキュメントに

「Note
Requires the MySQLdb Python package on the remote host. For Ubuntu, this is as easy as apt-get install python-mysqldb. (See apt.)」

なんとリモート側にインスールが必要だとさ!頑張って操作する方に入れていたという・・・あほかい!

カテゴリー: Ansible, Database, MySQL | タグ: , , | コメントする

Tomcat8 OpenJDK7 on AmazonLinuxで動かす

Tomcat8の実行にはJDK7以上が必要となっている。
AmazonLinuxの2015/05現在の最新バージョンであればOpenJDKのランタイムが入っているので、以下のコマンド打ち込めばTomcat8インストールと起動までできる。

yum install tomcat8
/etc/init.d/tomcat8 start

ついでにOpenJDK1.8を入れてみたけど、こちらでも問題なく起動。
Tomcat8ならではの機能は全く使っていないのだが!

カテゴリー: Tomcat | コメントする

Ansible シンボリックリンク作成

Ansibleでシンボリックリンクの作成はfileモジュールで行う。
state: linkがポイントである。

- name: インストール先にシンボリックリンクを張り替える
  file:
    src: /usr/java/jdk1.7.0
    dest: /usr/java/jdk
    state: link
カテゴリー: Ansible | タグ: , , | コメントする

Let’s note CF-N9 HDD交換 ねじ二本はずすだけでOK

CF-S8からS10までとN8からN10まで共通のHDD交換手法

以前CF-S10でHDDをSSDに交換したが、今度は容量が大きいHDDに交換してみた。

バッテリーをはずして、二本のねじをはずせばふたがとれる。

HDDは9mmが入るので、SSDの場合でも9mmでOK。
今主流になりつつある、薄型の7mmでなくてもよい。

前回はわざわざスペーサーを買ってきて9mmにして、取り付けたのだが、中のスポンジが邪魔になるので7mmのままでも大丈夫。
また9mm厚さのHDDの場合、スポンジが邪魔になるので使用済みカード(磁気カード)などを使って奥に差し込むようにするとスムーズに行く。

カテゴリー: Let's note | タグ: , | コメントする

lftpでproxyを使う

lftpでproxyを使うときの設定。

システムの設定を使うのかわからないが、以下の設定で確実にproxyを利用するようになる。localhostにはsquidがデフォルトポートでインストールされているとする。

$ lftp
lftp :~> set ftp:proxy http://localhost:3128/
lftp :~>  open ftp.riken.jp
lftp ftp.riken.jp:~> dir
カテゴリー: Linux | タグ: , | コメントする

Ansible AWSにインストールするならyumよりpip install ansibleの方が楽

EPELリポジトリでインストールしたansibleは、AmazonLinuxの最近のバージョンだと動かなくなっている。

sudo yum install ansible --enablerepo=epel

実行するとエラーとなってしまう。原因はpythonのバージョンが2.7になったからということでならばpipで入れてしまうのだ。

sudo pip-2.7 install ansible

今度はエラーなく無事終了!

カテゴリー: Ansible | コメントする