AWS 無料枠の利用のつもりが1円課金された

金額自体は大したことがないのだが、インスタンスの起動はこまめに停止して、760時間以内に収めたし、インスタンスの数は3つまでに抑えて、増えそうなときはTerminateしたつもりだが、以下の項目で課金がされていた。

$0.095 per GB-Month of snapshot data stored – Asia Pacific (Tokyo)

たしかにSnapshotを一回取ったような気がした。これで課金されたわけか!

しかし一円でクレジットカードに請求あげた場合に、カード会社に払う手数料はどうなるんだろうか!

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

Ansible roleにtagを付与する

通常であれば条件分岐を使ったほうが良いのかもしれないが、長い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 | タグ: , , | コメントする

Ansible includeに条件を付ける

AnsibleでRoleに実行条件を付けると同様にincludeでも条件を付けることができる。
通常はroleの条件をメインに使うべきだが、一つのRole内で条件分岐が多くなってきたら、ファイルを分けてしまうのが良いだろう。

- include: web01.yml
  when: server == "01"
- include: web02.yml
  when: server == "02"
カテゴリー: Ansible | コメントする

Apacheをフォワードプロキシとして使う

アクセス制限も何もかけていないのでインターネットにそのままさらしてはいけないが、
下記の設定で行ける。

<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が作動している証拠!

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

Ansible AmazonLinuxにインストールするならpipでinstall

AmazonLinux上でAnsibleを実行させようとEPELのyum install ansible –enablerepo=epelでインストールしたものを実行するとansibleが見つからないなどの意味がわからないエラーが出てしまった。

しゃーないんでpip経由でインストールしたら問題なく動いた。

こういうこともあるもんだ!

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

Ansible roleに条件を付ける OS毎に分ける例

公式ドキュメントにあるが、日本語で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ロールが実行される。

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

Ansible テンプレートを元に変数を埋めてコピーするtemplateモジュール

templateモジュール自体はファイルコピーとほぼ同じなのだが、変数部分を置換後にコピーするというのが違い。

templateタスクの記載例はあるのだが、置換元のファイルの記載方法についてはあまりなかったようなのであげてみた。

下記例は/etc/hostsに変数hostnameに定義した値を展開してから、コピーするタスク。実施条件としてhostname変数があることも入れている。

# hosts
- name: /etc/hosts setup
  template: src=hosts.j2 dest=/etc/hosts
  when: hostname is defined

hosts.j2の記載は置換部分をansibleと同じように{{ 変数名 }} で記載しておく。

127.0.0.1   {{ hostname }}.localdomain {{ hostname }} localhost localhost.localdomain

上記の場合はhostname変数が展開される。

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

CentOS7 テキストインストールは Tabキーを押して、文字列textを加えて起動する

CentOS7のテキストインストールについて、まともな記事が出てこないので、

CentOSのデフォルトのGUIインストールだと、仮想マシンのコンソールでは上下にスクロールせねばならず都合がわるい。

CentOS7はテキストインストールのほうがよいだろう。

インストーラーでTabキーを押すと、起動コマンドが出てくるので、その末尾にtextと加えればテキストインストールモードが起動する。

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

Ansible 実行時に対象ホストを動的に変更する

Ansibleを実行していて、インベントリにあるホストを実行時に変更したいときがある。
たとえばテスト実行ではローカル対象にして、いざとなったらリモートにしたいなど

そんな時は下記のようなplaybookを記載しておくと、実行時に動的に対象ホストが変更できる。
入力するホストはインベントリに記載されているホスト名と一致させること!

- hosts: '{{ target_host }}'
  sudo: yes
  roles:
    - setup
  vars_prompt:
    - name: "target_host"
      prompt: "Please enter target_host"
      default: "default"
カテゴリー: Ansible | コメントする

Ansible 設定ファイルに行を追加するなら lineinfile

Tomcatの設定ファイルにJAVA_OPTSを追加したい。
一番簡単なのは設定ファイルごとcopyしてしまうことだが、
単に下記の一行があればいいというのであれば、lineinfileを使えばよい

- name: tomcat conf
  lineinfile:
    dest: /etc/tomcat8/tomcat8.conf
    line: JAVA_OPTS="-server -Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:PermSize=256m"
カテゴリー: Ansible | タグ: , | 1件のコメント