ansibleでファイルを書き替える方法

April 18,2019 12:03 AM
Category:[ansible]
Tag:[ansible]
Permalink

ansibleでファイルを書き替える方法を紹介します。

1.はじめに

ansibleでファイルの中身を書き替えたいのですが、方法が分かりません。

ということで、ansibleでファイルを書き替える方法を紹介します。

2.ansibleでファイルを書き替える

ansibleでファイルを書き替えるには、lineinfileモジュールを利用します。

下記にサンプルを示します。すいませんがhostsの部分は適宜直してください。

- hosts: localhost
  become: True
  tasks:
  - name: lineinfile
    lineinfile:
      path: /home/hoge/test.txt
      regexp: '^aaa'
      line: 'bbb'
  • lineinfile:ファイル書き換えのためのモジュール
  • path:書き替え対象のパス・ファイル名(必須)
  • regexp:書き替え前の内容(正規表現)
  • line:書き替え後内容

上記の例は、ファイル/home/hoge/test.txtの行頭が

aaa

という行を

bbb

に書き替えています。

なお、regexpの部分が見つからない場合、lineの内容がファイルの末尾に追加されます。

path、regexp、lineは適宜書き替えてお使いください。

3.ansibleでファイルの特定行を削除する

ansibleでファイルの特定行を削除するには、stateオプションを利用します。

- hosts: localhost
  become: True
  tasks:
  - name: lineinfile
    lineinfile:
      path: /home/hoge/test
      state: absent
      regexp: '^aaa'
  • state:行が存在するか・しないか(削除なので"absent")

これでregexpにマッチする行を削除します。

ちなみに書き替えでstateオプションをつけるのであれば、

      state: present

とします。

ただしデフォルト値がpresentなので、あえて記述する必要はありません。

Comments [0] | Trackbacks [0]

ansibleでvisudoする方法

April 16,2019 12:03 AM
Category:[ansible]
Tag:[ansible]
Permalink

ansibleでvisudoする方法を紹介します。

1.はじめに

サーバ設定作業でansibleを使うことになりました。

「ansibleを使ってこういうときにどうすればいいの?」っていう情報がネットを検索してもなかなかヒットしないので、分かる範囲で小出しにしていきます。

2.ansibleでvisudoする方法

ansibleでvisudoするには、下記のようなplaybookで対応します。hostsの部分は適宜直してください。

- hosts: localhost
  become: True
  tasks:
  - name: test
    lineinfile:
      path: /etc/sudoers
      state: present
      regexp: '^%ADMIN ALL='
      line: '%ADMIN ALL=(ALL) NOPASSWD: ALL'
      validate: '/usr/sbin/visudo -cf %s'
  • lineinfile:ファイル書き換えのためのモジュール
  • path:書き替え対象のパス・ファイル名(必須)
  • state:行が存在するか・しないか(書き替えなので"present")
  • regexp:書き替え前の内容(正規表現)
  • line:書き替え後内容
  • validate:書き替え後の検証。"%s"でpathの内容を指定

上記の例は、

%ADMIN ALL=

という行を

%ADMIN ALL=(ALL) NOPASSWD: ALL

に書き替えて、

# /usr/sbin/visudo -cf /etc/sudoers

で、書き替えたファイルの検証をしています。

regexpとlineを適宜書き替えてお使いください。

Comments [0] | Trackbacks [0]

Pythonで「SyntaxError: Non-ASCII character」というエラーの対処

April 9,2019 11:55 PM
Category:[Python]
Tag:[Python]
Permalink

Pythonで「SyntaxError: Non-ASCII character」というエラーの対処について紹介します。

1.問題点

Pythonで下記のようなスクリプトを書きました。

test.py

#!/usr/bin/env python2
print 'テスト'

このスクリプトを実行したところ、下記の「SyntaxError: Non-ASCII character」というエラーに遭遇しました。

$ ./test.py
  File "./test.py", line 3
SyntaxError: Non-ASCII character '\xe3' in file ./test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

2.「SyntaxError: Non-ASCII character」というエラーの対処

このエラーを解消するには、ファイルに下記の1行を追加します。

test.py

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
print 'テスト'

実行結果

テスト

この

# -*- coding: utf-8 -*-

という行は、

あるいは下記の記述でもOKです。

#!/usr/bin/env python2
# coding:utf-8
print 'テスト'

または、

#!/usr/bin/env python2
# coding=utf-8
print 'テスト'

3.注意事項

サンプルのようにshebang行がある場合は、その直後(2行目)に記述してください。

下記のように行を空けて記載するとエラーが解消されないようです。

test.py

#!/usr/bin/env python2
 
# -*- coding: utf-8 -*-
print 'テスト'
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages