AWS SQS(1)Amazon Simple Queue Serviceの概要

Amazon SQSについて

Amazon SQSは、マネージド型のメッセージキューイングサービス。SQSを使用することであらゆる量のソフトウェアコンポーネント間で、メッセージの送信や保存、受信が可能となる。

SQSでは、標準キューと呼ばれる配信順序がベストエフォート型のキューと、FIFOキューと呼ばれる送信順に配信されるキューの2つが用意されている。FIFOキューは、米国東部(バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、および 欧州 (アイルランド) リージョンのみで使用可能。

内容 標準キュー FIFOキュー
イメージ 標準キュー FIFOキュー
特徴 無限のスループット, 1回以上の配信, ベストエフォート 300件/秒, 1回のみ処理, 厳密な順序

キュー内のメッセージ数の上限は、12万件。メッセージ属性は、単一メッセージ内に10個まで。バッチ処理は、10メッセージまで同時に可能である。

AWSサービスとの連携

Amazon SQSは、他のAWSサービスと連携して使用することができる。

  • Amazon SNSでトピックが発行された際に、指定したSQS(標準キューのみ)対してキューメッセージを送信することができる。
  • キュー(標準キューのみ)にメッセージが着信した際に、これをトリガにLambda関数を事項させることができる。

キューの設定

キューを作成する際には、以下の項目を設定する。

設定項目 内容 デフォルト値 最大
可視性タイムアウト 受信したメッセージが他のキューから見えない時間 30秒 12時間
保持期間 メッセージの保持期間 4日 14日
最大メッセージサイズ 最大メッセージサイズ 256KB 256KB
配信遅延 初回配信時の遅延時間 0秒 15分
メッセージ受信待機時間 ロングポーリング時の待機時間。0秒に設定するとショートポーリングとなる。 0秒 20秒
コンテンツに基づく重複排除 (FIFOのみ) 本文のハッシュ値から重複排除IDを自動生成する 無効
デッドレターキュー 最大受信数を超えた場合の処理 無効 1000
サーバ側暗号化 CMKを用いたサーバ側暗号化の設定 無効

ロングポーリングとショートポーリング

ロングポーリングの場合、問い合わせの結果が空であった場合に、指定したメッセージ受信待機時間、SQSが待機してから応答を返す。これによって、空のレスポンス数を削減し、効率的なメッセージ取得が可能となる。

ショートポーリング

ショートポーリングは、問い合わせの結果に関わらず、常に応答を返す。

メッセージの送信

SQSのメッセージには本文に加えて、メッセージ属性を含むことができる。メッセージ属性は、キータイプ(String, Number, Binary)、から成る。

標準キー

1メッセージ単位で、配信遅延時間を設定することができる。

FIFOキー

メッセージグループIDメッセージ重複排除IDが入力必須。メッセージグループIDが同一のメッセージは、順序が保障される。キューの設定で、コンテンツに基づく重複排除を有効化していない場合は、メッセージ重複排除IDも入力する必要がある。

重複排除間隔は、5分

メッセージの受信

可視性タイムアウトの値は、受信ソフトウェアがメッセージを処理する時間を計測して決定する。具体的には、受信ソフトウェアが処理時間よりも長く、かつリトライまで待つ時間が必要以上に長くならない値に設定すべきである。

また、ロングポーリングを設定することで空の応答を減らしたり、バッチ処理によって複数のメッセージを処理することで、SQSの使用コストを削減することができる。

メッセージのエラー処理

デッドレターキューを設定することで、処理できない問題のあるメッセージをキャプチャすることが可能である。なお、デッドレターキューにメッセージが送信されても、元のメッセージのタイムスタンプは変更されないことに留意が必要

AWS Identity and Access Management(4)STS

AWS Security Token Serviceとは

STSとは、AWSリソースへアクセスできる一時的なセキュリティ情報を持つユーザを作成できるサービスで、一般的なアクセス認証情報と異なり、リクエストに応じて、事前に定めた数分〜数時間の短い使用期限の認証情報が発行される。STSを利用することで作成したアプリケーションに長期の認証情報を埋め込む必要がない。STSはグローバルサービスで、全リージョンで単一のエンドポイントを持つ。

認証フェデレーション

外部システムでユーザーIDを管理し、それらのシステムからサインインするユーザーに一時的な認証情報を付与することができる。外部システムは、Microsoft Active DirectoryをはじめとしたSAML対応のサービスや、 Amazon、Facebook、Google、OpenID ConnectなどのウェブIDに対応している。

EC2におけるSTSの利用

EC2のロールもSTSを利用しており、ロールで許可したサービスを利用するために、一時的な認証情報がインスタンスに対して付与される。

セキュリティ認証情報のリクエスト

認証フェデレーションによって、アクセスキーおよびセッショントークンで構成された一時的セキュリティ認証情報を得ることができる。認証情報のリクエストには以下のAPIが利用できる。認証期間はデフォルトで1時間

API名 対象 呼び出し元 有効期間(デフォルト) 有効期間(最大)
AssumeRole クロスアカウント, カスタムIdB IAMユーザ 1時間 ロールの指定値
AssumeRoleWithWebIdentity Web IdP 任意のユーザ 1時間 ロールの指定値
AssumeRoleWithSAML SAML IdP 任意のユーザ 1時間 ロールの指定値
GetFederationToken カスタムIdB root/IAMユーザ 12時間 36時間
GetSessionToken 信頼されていない環境のユーザ root/IAMユーザ 12時間 36時間

AWS Elastic Beanstalk(1)Elastic Beanstalkの概要

Elastic Beanstalkとは

Elastic Beanstalkは、Java、.NET、PHP、Node.js、Python、Ruby、Go などを使用して開発されたプログラムをApache、Nginx、Passenger、IIS など使い慣れたサーバーでデプロイおよびスケーリングするためのサービス。インフラストラクチャの準備、運営から、アプリケーションスタック (プラットフォーム) の管理までをElastic Beanstalkが担当するため、ネットワーク設定や保守などの作業が不要

All at Onceローリング追加バッチとローリングイミュータブルブルー/グリーンなどの複数のポリシーからデプロイ方法を選択可能である。

Elastic Beanstalkを使用するにあたっての利用料金は不要で、デプロイしたAWSリソースに対する通常の使用料金のみ課金される。

使用するAWSリソースとその機能について、十分な知識を有する場合は、CloudFormationテンプレートを作成して運用することが望ましい。

Elastic Beanstalkのワークフロー

Elastic Beanstalkは、複数のアプリケーションを作成することが可能で、各アプリケーションは、Application VersionEnvironment(デプロイ済みのアプリケーション)やEnvironment TierEnvironmentの種別)、Environment Configuration(Environmentの設定)を有する。

Application Version

デプロイ可能なコードを指し、S3上でバージョン管理される。

Environment Tier

HTTP リクエストを処理し、ウェブアプリケーションを実行可能なWebサーバ環境と、Amazon SQSキューからタスクを引き出し、バッチ処理などをスケーラブルに実行可能なワーカー環境の2つから選択することが可能である。

Webサーバ環境

Webサーバ環境で構築されるEC2のソフトウェアスタックは、選択したコンテナタイプ(テンプレート)によって異なる。また、ホストマネージャー(HM)と呼ばれるソフトウェアコンポーネントも実行され、アプリケーションのデプロイの実行や、アプリケーションの監視等も行なっている。

Webサーバ環境

ワーカー環境

完了するまでに長い時間がかかる処理は、SQSを用いたワーカー環境で実行することが望ましい。ワーカー環境では、Amazon SQS キューを管理しタスクを実行するSQSデーモンが実行される。また、cron.yamlにタスクを記述することで、タスクの定期実行を行うことも可能である。

ワーカー環境

設計上の注意事項

スケーラビリティを確保する方法として、スケールアップ(垂直スケーリング)とスケールアウト(水平スケーリング)が存在が、スケールアップは過剰なリソースの準備となるなど問題点が存在するため、Elastic Beanstalkアプリケーションは、必要に応じてスケールアウトできる耐障害性に優れた疎結合コンポーネントを使用して、できるだけステートレスにする必要がある。

また、耐障害性を有するように、必ず故障から自動回復できるように設計、実装、およびデプロイする必要がある。

アプリケーションの管理

ソースコードをアップロードするたびに、新たなバージョンラベルを付与し、アプリケーションバージョンを作成する。古いアプリケーションバージョンは削除することも可能で、削除してもデプロイ済みのEnvironmentには影響を与えない

アプリケーションバージョンライフサイクルポリシーを設定することで、過去のバージョンを自動的に削除することが可能である。保有するバージョンの数、もしくは期間を設定でき、これを超えるとサービスが自動でアプリケーションバージョンを削除する。

アプリケーションは、ソースバンドルと呼ばれる処理プログラムを含む必要があり、ソースバンドルは、単一のZIPファイルまたはWARファイルで構成される必要がある。AWS Toolkit for Eclipse等を使用して開発を行なっている場合は、ツールが正しく構造化した上でZIP化してくれる。

Environmentの管理

1つのアプリケーションは、開発環境、統合環境、本番環境など複数のEnvironmentをデプロイすることができる。新たなEnvironmentを作成する場合は、

  • プラットフォーム
  • Application Version もしくは 新たなソースバンドル
  • Environment Tier(ウェブ環境/ワーカー環境)

等を指定する。作成したEnvironmentを終了すると、デプロイしたリソースの全てが削除される。

デプロイ

Environmentをデプロイする際には、複数のデプロイ方法の中から1つを選択することが可能である。

方法 デプロイメントポリシー 内容 制約 時間 ダウンタイム DNS変更
All at Once All at Once 現行のインスタンス全てに新たなコードを適用する
Rolling Rolling 現行のインスタンスに順に新たなコードを適用する 単一インスタンス環境では選択できない やや速
Rolling with additional batch Rolling with additional batch 新たなインスタンスと現行のインスタンスの一部に新たなコードを適用する 単一インスタンス環境では選択できない
Immutable Immutable 新たなインスタンスに新たなコードを適用する
Blue/Green Rolling with additional batch もしくは Immutable 新たなインスタンス(と現行のインスタンスの一部)に新たなコードを適用する 単一インスタンス環境では選択できない URL Swap もしくは DNS切り替え

Rollingを用いてデプロイする場合は、更新するバッチサイズを指定する。また、Route53の加重ラウンドロビンを利用することで、新バージョンを徐々に適用していくことも可能である。

プラットフォームの更新

アプリケーションを実行しているプラットフォームの更新を定期的に、もしくは手動で行うことが可能である。また、マイナーアップデートを含めるのか、パッチの適用だけなのかについても選択することができる。

AWS認定(2)デベロッパー(アソシエイト)に合格するまで

AWS認定デベロッパー試験合格に向けての資料集。以下の資料を何度も読み込んで、手を動かしながら実践を繰り返すことが合格の近道となる。

出題範囲と学習法

AWS認定デベロッパー試験の問題は、システムを構築する際に、可用性や拡張性コストなどを考慮した上で、実際どのような手法で実装するかについて問われることが多い。AWSが提供するサービスは100を超えるが、本試験を受講する上では、API Gateway, Cognito, DynamoDB, S3, SQS, IAM(STS), Elastic Beanstalk, Elastic Beanstalk, Lambdaなどのデプロイツールやサーバレスアーキテクチャの理解。また、CloudFormation, CodeBuild, CodeCommit, CodeDeploy, CodePipeline, CloudFront, CloudWatch, ElastiCache, Kinesis, RDS, X-Rayなども理解しておくことが必要である。

勉強法は、

  1. サンプル問題集に目を通してレベルを確認する
  2. 以下の資料を読みながら実際に各サービスに触れる
  3. 模擬試験を受講する

で十分合格ラインに行くかと。ちなみに学習時間は2週間ほど。なお、各サービスのドキュメントにベストプラクティスの項目が存在する場合は、該当部分を理解しておく

対策本

対策本はほとんど発売されていない。以下の本が唯一の試験対策本。この本には、各サービスの概要や特徴が簡潔に書かれており、AWSの各サービスの概要を学ぶためには非常に有効。一方で、章末問題と実際の試験問題は異なるので、実際の問題に慣れるためには、模擬試験の受講が必要である。

AWSの概要とセキュリティ

AWS(1)AWSの概要とメリット
AWS(4)Well-Architectedフレームワーク
AWS(5)セキュリティのベストプラクティス

AWS Identity and Access Management

AWS(2)セキュリティの概要
AWS Identity and Access Management(1)IAMの概要
AWS Identity and Access Management(4)STS

AWSの基本サービスの概要

Amazon S3

AWS S3(3)S3の概要
AWS S3(4)使用する上で注意すること

Amazon RDS

AWS RDS(1)Relational Database Serviceの概要

Amazon DynamoDB

AWS DynamoDB(1)DynamoDBの概要

Amazon ElastiCache

AWS ElastiCache(1)ElastiCacheの概要

AWS Lambda

AWS Lambda(1)Lambdaの概要
AWS Lambda(3)使用する上で注意すること

Amazon Kinesis Data Streams

AWS Kinesis(1)Kinesisの概要

Amazon SQS

AWS SQS(1)Amazon Simple Queue Serviceの概要

AWS Elastic Beanstalk

AWS Elastic Beanstalk(1)Elastic Beanstalkの概要

Amazon CloudWatch

AWS CloudWatch(1)CloudWatchの概要

Amazon SNS

AWS SNS(1)Simple Notification Serviceの概要
AWS SNS(2)モバイルプッシュ通知

Amazon Cognito

AWS Cognito(1)Cognitoの概要

AWS API Gateway(3)カスタムログの出力


API Gatewayは、詳細のアクセスログをCloudWatch Logsに吐き出すことができる。CloudWatch Logsへのログ書き込みを行うためには、書き込み権限の取得とログを書き込むロググループの指定が必要となる。

IAMロールの指定

IAM上でAPI GatewayからCloudWatch Logsへの書き込み許可を持つIAMロールを作成する。IAMでは、あらかじめAmazonAPIGatewayPushToCloudWatchLogsと呼ばれるポリシーが用意されているため、このポリシーがアタッチされたIAMロールを作成する。この作成したIAMロールをAPI Gatewayの設定画面上で指定することで、API GatewayはCloudWatch Logsへの書き込み権限を取得する。

ログの指定

次にAPI Gateway上の各APIのログ/トレース設定画面にて、カスタムアクセスのログ記録を有効化する。入力項目は、CloudWatchロググループのARNと、ログ形式の2種類。ログ形式は、JSONやCLFなどの中から選ぶと自動的に入力される。

AWS API Gateway(2)Kinesisへのデータ投入

API Gatewayから大量のデータを投入し、これらのデータを解析および蓄積する場合には、API GatewayからLambdaに直接データを渡すのではなく、大規模データストリームサービスのKinesisを介した方が、バックエンドのシステムが高負荷に晒されずに安定的に稼働させられる場合がある。

API Gatewayとバックエンドのエンドポイントとの接続は、API Gateway内の統合リクエスト機能を用いて行い、統合リクエストは下の5つの統合タイプを用意している。

  • Lambda関数
  • HTTP
  • Mock
  • AWSサービス
  • VPCリンク

Mockは、バックエンドと接続せずにレスポンスを返す統合タイプで、テストを行う際や、CROSのプリフライトリクエストの返答などに用いる。

統合リクエスト

Kinesisと接続する場合は、POSTメソッドを作成し、上記のうちの「AWSサービス」を選択して以下のように各欄に必要事項を入力する。Kinesisへデータ投入する際には、Kinesis側で用意されているputRecordメソッドを使用する。

データ入力項目

項目 入力内容 備考
統合タイプ AWSサービス
AWS リージョン 当該Kinesisのリージョン
AWS サービス Kinesis
AWS サブドメイン 空欄
HTTP メソッド POST
アクション PutRecord
実行ロール KinesisへのputRecordをAPI Gatewayに許可するIAMロール arn:aws:iam::account-id:role/iam-role-name

IAMロールについては、KinesisへのputRecordをAPI Gatewayに許可する記述が必要で、IAM上で以下の内容を含んだIAMロールを作成する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": "arn:aws:kinesis:*:*:stream/*"
        }
    ]
}

データマッピング

API GatewayからKinesisにデータを投入する場合は、クライアントから受信したデータをKinesisが規定するデータフォマットに変換する必要がある。これに対応するのがデータマッピング機能で、Velocity Template Languageを用いて記述することができる。

よく使われる関数および使用例を以下に挙げる。

記述 内容
#set($param = ”) 変数の定義
#if(評価式) #end if文
$context.requestTimeEpoch データの受信時刻
$input.path(‘$.param’) 入力データ内の指定タグの値
$input.path(‘$.param’).size 入力データ内の指定タグの数
$input.params().header.get(”) ヘッダ内の指定タグの値
$input.json(‘$.param’) 入力データ内の指定タグJSONデータ
$util.urlDecode($input.path(‘$’)) 入力データをURLデコード
$util.escapeJavaScript(data) 文字をエスケープ
$util.base64Encode(data) 文字をBASE64エンコード

また、これらを使用してデータマッピングを記述すると以下となる。

#set($allParams = $input.params())
{
  "params" : {
    #foreach($type in $allParams.keySet())
    #set($params = $allParams.get($type))
    "$type" : {
      #foreach($paramName in $params.keySet())
      "$paramName" : "$util.escapeJavaScript($params.get($paramName))"
      #if($foreach.hasNext),#end
      #end
    }
    #if($foreach.hasNext),#end
    #end
  }
}

AWS API Gateway(1)API Gatewayの概要

API Gatewayとは

API Gatewayは、完全マネージドのAPI作成サービス。受信したAPIコールと送出したデータ量に対して課金される。スロットリングによるトラフィック管理ができるため、DDoSやトラフィックの激増にも対応することが可能であり、リミットを超えたリクエストにはHTTPステータス 429が返却される。また、レスポンスはキャッシュ可能であり、レイテンシやトラフィック等を低減することができる。

API Gatewayは、IAMやCognitoを用いたアクセス認証署名付きAPIコールなどを使用することができるために柔軟にセキュリティ管理ができる。また、CloudWatchやCloudWatch Logsを用いた監視が可能で効率的なデバッグとモニタリングを実現している。

![API Gateway]https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/BackplaneArch.png

エンドポイント

API Gatewayは、特定のリージョンにデプロイされる。エンドポイントは以下の3種類がサポートされている。エンドポイントは、HTTPSのみサポートされている。

種類 内容
エッジ最適化 CloudFrontネットワークにデプロイ
リージョン リージョンにデプロイ。EC2 インスタンスまたは API と同じリージョン内のサービスから送られる場合に使用すると良い。
プライベート VPCからのみアクセス可能

リソースとメソッド

APIは階層構造となっており、リソースやメソッドをネストすることも可能。指定可能なメソッドは以下の通り。

種類 実行内容
POST 子リリースの作成
PUT 既存リソースの更新
DELETE リソースの削除
PATCH リソースの更新
HEAD テストシナリオに使用
OPTIONS 通信オプションに関する情報を取得する度に使用できる

CROSを有効にするためには、OPTIONSメソッドのプリフライトリクエストに対してAPIが応答することが必要であり、このリクエストに対して、HTTPステータス 200Access-Control-Allow-Method, Access-Control-Allow-Headers, Access-Control-Max-Ageヘッダを含んだレスポンスを返す。これらの挙動には、統合リクエスト/レスポンスのMockタイプを使用する。

リクエストに対して、 URLクエリ文字列パラメータHTTPヘッダHTTPボディを検証し、必須の項目が含まれているかやキャッシュを行うかなどを指定することができる。HTTPボディがapplication/json形式である場合は、JSON Schemaを用いてJSON形式を指定することもできる。

統合リクエスト/レスポンスとマッピングテンプレート

API Gatewayとバックエンドとを接続する内部インタフェース。マッピングテンプレートを用いることで、フロントエンド(API Gateway)とバックエンドのデータ形式を変換することができる。

  • Lambda関数の呼び出し
  • 他のAWSサービスの呼び出し
  • HTTPウェブサイトのアクセス

の3つのバックエンドへのアクセスに対応している。Lambdaプロキシ統合を用いることで、API GatewayとLambdaがより協力に結合され、リクエストヘッダやパス変数などがLambdaに渡される。また、HTTPプロキシとして使用することも可能である。

デプロイ

APIを利用可能とするためには、APIのリソースおよびメソッドのスナップショットであるAPIのデプロイを実施する必要がある。APIをバージョン管理できるために、新しいバージョンを簡単にテストしリリースすることが可能である。

1アカウント1リージョンあたりのAPIの上限は、10000RPSである。これ以上のアクセス負荷にも耐えうる値とする場合は上限緩和申請が必要となる。

Ansible(5)パッケージ管理関連モジュール

Ansible

yum_repository

YUMリポジトリの追加削除を行う。

変数 デフォルト 内容 備考
name 必須 レポジトリ名
description 詳細内容
baseurl ベースURL
gpgkey GPG KEYのURL
gpgcheck システムに依存 GPGチェックをするかどうか
enabled yes 有効化するかどうか

Example

- name: Add repository
  yum_repository:
    name: epel
    description: EPEL YUM repo
    enabled: no
    baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/
    gpgkey: http://download.fedoraproject.org/pub/fedora/epel/RPM-GPG-KEY-EPEL-7
    gpgcheck: yes

yum

YUMによるパッケージのインストールや更新、削除を行う。

変数 デフォルト 内容 備考
name パッケージ名 全てを選択する場合は*
enablerepo 有効化するリポジトリ名
security no セキュリティ関連の更新のみインストール
state 実行内容 absent, installed, latest, present, removed

Example

- name: ensure a list of packages installed
  yum:
    name: "{{ packages }}"
    enablerepo: epel
  vars:
    packages:
    - httpd
    - httpd-tools

- name: upgrade all packages about security
  yum:
    name: '*'
    state: latest
    security: yes

Ansible(4)コマンド実行モジュール

Ansible

command

コマンドを実行する。

変数 デフォルト 内容 備考
必須 実行するコマンド
chdir 実行する前に移動するディレクトリ

Example

- name: return motd to registered var
  command: cat /etc/motd
  register: mymotd

debug

コマンド実行内容を表示する。

変数 デフォルト 内容 備考
var 表示する変数

Example

- debug:
    var: result
    verbosity: 2

expect

コマンドを実行しプロンプトに応答する。

変数 デフォルト 内容 備考
command 必須 実行するコマンド
chdir 実行する前に移動するディレクトリ
responses プロンプトへの応答 正規表現にて規定する

Example

- name: Case insensitive password string match
  expect:
    command: passwd username
    responses:
      (?i)password: "MySekretPa$$word"
  # you don't want to show passwords in your logs
  no_log: true

make

Makeファイルを実行する

変数 デフォルト 内容 備考
chdir 必須 実行する前に移動するディレクトリ
target ターゲット install, all

Example

# Run `install` target as root
- make:
    chdir: /home/ubuntu/cool-project
    target: install
  become: yes

service

サービスの管理を行う。

変数 デフォルト 内容 備考
name 必須 サービス名
state 実行内容 reloaded, restarted, started, stopped
enabled ブート時に起動するかどうか

Example

- name: Enable service httpd, and not touch the state
  service:
    name: httpd
    enabled: yes

shell

コマンドを実行する。
ワイルドカードを指定する場合はcommandモジュールではなくshellコマンドを使用する

変数 デフォルト 内容 備考
必須 実行するコマンド
chdir 実行する前に移動するディレクトリ

Ansible(3)システム管理モジュール

Ansible

cron

cronの設定を行う。

変数 デフォルト 内容 備考
name cron名
job 実行コマンド
minute *
hour *
day *
month *
month *
state present 実行内容 absent, present

Example

- name: Ensure a job that runs at 2 and 5 exists. Creates an entry like "0 5,2 * * ls -alh > /dev/null"
  cron:
    name: "check dirs"
    minute: "0"
    hour: "5,2"
    job: "ls -alh > /dev/null"

group

グループを管理する。

変数 デフォルト 内容 備考
name 必須 グループ名
state present 実行内容 absent, present

Example

- name: Ensure group "somegroup" exists
  group:
    name: somegroup
    state: present

lvol

LVMボリュームを作成する。

変数 デフォルト 内容 備考
vg ボリュームグループ名
lv 論理ボリューム名
size ボリュームサイズ
state present 実行内容 absent, present

Example

- name: Create a logical volume of 512m
  lvol:
    vg: firefly
    lv: test
    size: 512

mount

ファイルシステムをマウントする。

変数 デフォルト 内容 備考
path 必須 マウントポイント
state 必須 実行内容 absent, mounted, present, unmounted
src マウントパス
fstype ファイルシステム

selinux

SELinuxのポリシーを変更する。

変数 デフォルト 内容 備考
state None 実行内容 enforcing, permissive, disabled

Example

# Enable SELinux
- selinux:
    policy: targeted
    state: enforcing

sysctl

sysctl.confを管理する。

変数 デフォルト 内容 備考
name 必須 キー
value
state present 実行内容 absent, present

Example

# Set vm.swappiness to 5 in /etc/sysctl.conf
- sysctl:
    name: vm.swappiness
    value: 5
    state: present

user

ユーザを管理する。

変数 デフォルト 内容 備考
name 必須 ユーザ名
password パスワード
groups グループ名
shell シェル
createhome yes ホームディレクトリを作るかどうか
home ホームディレクトリ

Example

- name: Add the user 'johnd' with a specific uid and a primary group of 'admin'
  user:
    name: johnd
    comment: John Doe
    uid: 1040
    group: admin

timezone

タイムゾーンを設定する。

変数 デフォルト 内容 備考
name タイムゾーン

Example

- name: set timezone to Asia/Tokyo
  timezone:
    name: Asia/Tokyo