Ansibleでシンボリックリンクの作成はfileモジュールで行う。
state: linkがポイントである。
- name: インストール先にシンボリックリンクを張り替える
file:
src: /usr/java/jdk1.7.0
dest: /usr/java/jdk
state: link
Ansibleでシンボリックリンクの作成はfileモジュールで行う。
state: linkがポイントである。
- name: インストール先にシンボリックリンクを張り替える
file:
src: /usr/java/jdk1.7.0
dest: /usr/java/jdk
state: link
CF-S8からS10までとN8からN10まで共通のHDD交換手法
以前CF-S10でHDDをSSDに交換したが、今度は容量が大きいHDDに交換してみた。
バッテリーをはずして、二本のねじをはずせばふたがとれる。
HDDは9mmが入るので、SSDの場合でも9mmでOK。
今主流になりつつある、薄型の7mmでなくてもよい。
前回はわざわざスペーサーを買ってきて9mmにして、取り付けたのだが、中のスポンジが邪魔になるので7mmのままでも大丈夫。
また9mm厚さのHDDの場合、スポンジが邪魔になるので使用済みカード(磁気カード)などを使って奥に差し込むようにするとスムーズに行く。
lftpでproxyを使うときの設定。
システムの設定を使うのかわからないが、以下の設定で確実にproxyを利用するようになる。localhostにはsquidがデフォルトポートでインストールされているとする。
$ lftp lftp :~> set ftp:proxy http://localhost:3128/ lftp :~> open ftp.riken.jp lftp ftp.riken.jp:~> dir
EPELリポジトリでインストールしたansibleは、AmazonLinuxの最近のバージョンだと動かなくなっている。
sudo yum install ansible --enablerepo=epel
実行するとエラーとなってしまう。原因はpythonのバージョンが2.7になったからということでならばpipで入れてしまうのだ。
sudo pip-2.7 install ansible
今度はエラーなく無事終了!
金額自体は大したことがないのだが、インスタンスの起動はこまめに停止して、760時間以内に収めたし、インスタンスの数は3つまでに抑えて、増えそうなときはTerminateしたつもりだが、以下の項目で課金がされていた。
$0.095 per GB-Month of snapshot data stored – Asia Pacific (Tokyo)
たしかにSnapshotを一回取ったような気がした。これで課金されたわけか!
しかし一円でクレジットカードに請求あげた場合に、カード会社に払う手数料はどうなるんだろうか!
通常であれば条件分岐を使ったほうが良いのかもしれないが、長いAnsibleJOBを細かくテストするときにはtagを付けるのが便利なのでtagを付けている。
これをroleレベルで付与するときの記載方法は以下の通り
roles:
- { role: web/launch, tags: create_web }
- { role: db/launch, tags: create_db,when: "create_db is defined" }
- { role: route53/launch, tags: [ 'create_web','create_db'] }
複数つける場合tags:tag1,tag2とやるとエラーにもならないが、tag1しか有効とならないので[‘tag1’, ‘tag2’]のように記載する!
実行時は–tagsに指定のタグをつける。
AnsibleでRoleに実行条件を付けると同様にincludeでも条件を付けることができる。
通常はroleの条件をメインに使うべきだが、一つのRole内で条件分岐が多くなってきたら、ファイルを分けてしまうのが良いだろう。
- include: web01.yml when: server == "01" - include: web02.yml when: server == "02"
アクセス制限も何もかけていないのでインターネットにそのままさらしてはいけないが、
下記の設定で行ける。
<IfModule mod_proxy.c> ProxyRequests On ProxyVia On <IfModule mod_disk_cache.c> CacheEnable disk / CacheRoot "/var/cache/mod_proxy" </IfModule> </IfModule>
wgetでproxyを指定して実行してみる
export http_proxy="http://localhost/" wget http://blog.rutake.com/
/var/cache/mod_proxyにファイルができていればproxyが作動している証拠!
AmazonLinux上でAnsibleを実行させようとEPELのyum install ansible –enablerepo=epelでインストールしたものを実行するとansibleが見つからないなどの意味がわからないエラーが出てしまった。
しゃーないんでpip経由でインストールしたら問題なく動いた。
こういうこともあるもんだ!
公式ドキュメントにあるが、日本語でroleの条件指定の情報が少なかったので記載。
特定のOSや環境だけタスクを実施したい時はタスクごとにwhen:を使えばよいのだが、これをrole単位で適用したい場合はどうするか?
答え:roleにwhen条件を入れればよい。
- hosts: localhost
connection: local
roles:
- common
- { role: debian, when: "ansible_os_family == 'Debian'" }
- { role: redhat, when: "ansible_os_family == 'RedHat'" }
上記でDebianにて実行時にはdebianロールが、ReaHatで実行時にはredhatロールが実行される。