Edited at

AnsibleでAWSにGoogle Chromeをヘッドレス実行可能な環境を自動構築する

More than 1 year has passed since last update.


はじめに

先日ひょんな事からサーバ上でGoogle Chromeをヘッドレス実行して、

スクリーンショットを撮りたい需要があったので、

AWS EC2上にGoogle Chromeをヘッドレス実行可能な環境を構築しました。

その際に、すぐに環境を再現できるようにAnsibleのPlaybookを作成したのでGithubで公開します。

https://github.com/rednes/ansible-aws-headlesschrome


3行まとめ


  • SeleniumでGoogle Chromeをヘッドレス実行してスクリーンショットを撮りたい

  • AWS EC2のOpenSUSEと Python3 + Selenium + chromedriver を利用

  • この環境をEC2インスタンスの作成からAnsibleで構築

img


前提


  • ansible, botoをインストールすること

  • AWSのサーバー構築に使用するIAMユーザが作成されていること

  • AWSマネジメントコンソールでキーペア登録していること


何を構築するのか

以下の内容をAnsibleで自動構築します。


  • AWS環境


    • VPCの作成

    • Internet Gatewayの作成

    • サブネットの作成

    • ルートテーブルの作成

    • セキュリティグループの作成

    • EC2インスタンスの作成



  • アプリケーション


    • Zypperパッケージ(python3、日本語フォント等)のインストール

    • Google Chromeのインストール

    • python-seleniumのインストール

    • chromedriverのダウンロード

    • 動作確認用のサンプルソース配置



環境構築のやり方はこちらの記事を参考にさせていただきました。

AnsibleでAWS環境を構築する内容については、過去の記事を参考にしてください。


何ができるようになるのか

python3のseleniumを利用してGoogle Chromeをヘッドレス実行できるようになります。

例えば、以下のサンプルソースを実行することでサーバ上でGoogle検索した結果のスクリーンショットを撮ることが出来ます。

ちょっとseleniumをガリガリ実行するためのサーバ立てたいと思った時にコマンド一発で環境構築できます。


sample.py

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')

driver = webdriver.Chrome('chromedriver', chrome_options=options)

driver.get('https://www.google.co.jp/search?q=chrome')
driver.save_screenshot('screenshot.png')
driver.quit()


result