ansibleを使ってみた2
今回はVagrantでAnsibleを実行してみました。
必要な手順は以下の通りです。
・Vagrantでbox作成
・Vagrantファイルと同じディレクトリにhostsファイルを作成
内容は以下のような感じにする(グループ名とホストは任意)
[vagrant] 192.168.xxx.xxx
・taskを定義したyamlファイルを作成
・Vagrantファイルにansibleのtaskを実行する設定を追加
内容は以下のような感じにする(ansible.limit='all'がないと動かないようです)
Vagrantfile config.vm.box = "box名" config.vm.network "forwarded_port", guest: 22, host: ホストの任意のポート config.vm.network "private_network", ip: "hostsに定義したホスト" config.vm.provision :ansible do |ansible| ansible.playbook = "yamlファイル名" ansible.inventory_path = "hosts" ansible.limit = 'all' end end
あとはvagrant upでVirtualBoxイメージが生成されてAnsibleが実行されます。
google apps scriptでライブラリ化したときの問題
google apps scriptで作成したスクリプトをライブラリ化すると、
htmlからライブラリのスクリプトを実行できない問題が発生しました。
色々調べてみると、以下の2つのissueにたどり着きました。
上のライブラリ呼び出し部分のラッパー作成だけでは解決できず、
ライブラリを単体で作成することで解決ができました。
恐らくデフォルトではGoogle Driveの「作成」ボタンからスクリプトを選べないので、
以下の手順で追加してライブラリを作成しました。
・「作成」ボタン→「アプリを追加」→「Google Apps Script」を追加("script"で検索すると出てきます)
また、ダイアログからスクリプトを呼び出す際に気をつけないといけないのは、
ライブラリ側にgoogle.script.runで関数を呼び出すHTMLを含めた場合、
呼び出される関数はライブラリ呼び出し側のスクリプトに存在する必要があるということです。
nginxでハマったw
今nginx+bottle+mysqlでWebアプリケーションを作っていますが、
検索系の画面で、なぜか途中までしか表示されない現象が発生しました。
色々調べてみたところ、nginxのログに「open() "/var/lib/nginx/tmp/proxy/ほにゃらら" failed (13: Permission denied) while reading upstream」と吐かれていました。
なんじゃこりゃと思っていたら、
どうやら設定ファイルでnginxの実行ユーザーを変えたのに、/var/lib/nginxのアクセス権限が変わっておらず、キャッシュへアクセスできなかったことが原因だったみたいです。
結果としては/var/lib/nginxのアクセス権限を実行ユーザーのものに変えたら解決しましたとさ。
めでたしめでたし。
PythonからSolrへアクセス
最近よくApache Solrを使うので、簡単なアクセス方法をメモメモ
solrpyを使ってもいいのですが、今回は基本的なやり方だけで繋げています。
#!/usr/bin/env python # -*- coding:utf-8 -*- import json, urllib2 def search(keyword): query = 'http://solrサーバーのホスト名/solr/select?q=' + urllib2.quote(keyword)+ '&wt=json' # solrへのアクセス用クエリ(検索キーワードはurlエンコードしてから使用) r = urllib2.urlopen(query) # クエリ発行 json_data = json.loads(r.read()) # 結果の読み取り return json_data result = search('hoge') print(result['response']['docs']) # 検索結果の内容 print(result['response']['numFound']) # 検索結果の件数
apache solrを使えば、簡単に検索機能の仕組みが作れるのでいいですね。