Puppet 4ベースのLinuxシステムの展開オプション。パートII:アクセスと標準環境(cfauth + cfsystem)
要するに:
- cfauth -SSHサービス、管理者アカウント、
sudo 、スーパーユーザーパスワードを設定します - cfsystem-設定:APT、タイムゾーン、システムレターの送信、時間同期、標準パッケージの拡張リスト
- すべてのモジュールはcfnetworkネットワークフィルターモジュールと統合されており、追加の設定は不要です。
テーマサイクル:
このモジュールのペアは、展開されたほぼすべてのシステムで実行する必要がある標準アクションを自動化するために使用されます。
cfauthモジュール
目標
- OpenSSH構成をクリーンアップし、最も必要なものだけを残します
- 公開鍵アクセスのみ
- クライアントDNSホストの受信を無効にする-イグニッション、および追加のブレーキ(常にではない)
- OpenSSHおよびDebianバナーを無効にする
- 積極的なSSHキープアライブの有効化
ssh_access特殊グループのユーザーのみにSSHアクセスを許可します- 暗号化形式でのスーパーユーザーのパスワードの設定
- SSHアクセス用に別のユーザーを作成する
- パーミッション
sudoコマンド - デフォルトでは、パスワードなし(多数のシステムの管理を簡素化):
/opt/puppetlabs/puppet/bin/puppet agent --test/usr/bin/apt-get update/usr/bin/apt-get dist-upgrade/usr/bin/apt-get autoremove *
- デフォルトの許可されている環境設定は次のとおりです。
- すべてのチームで
sudoパスワードを無効にすることは許容されますsudo多数のマシンにとって便利で比較的安全です
構成
cfauth::admin_auth_keys - ssh_authorized_key形式の公開SSHキーの必須リスト
userパラメータは既に設定されていますtype = 'ssh-rsa'デフォルト
admin_user = 'adminaccess'管理者のアカウントの名前。 変更して標準を使用しないことをお勧めします。admin_password = undef指定されている場合、 rootおよび$admin_userハッシュ化されたパスワードを設定し$admin_user
mkpasswd -m sha-512を使用してパスワードを生成することをお勧めしますadmin_hosts = undefネットワークフィルターcfnetwork::service_port srcとして渡されcfnetwork::service_port 。 強くお勧めします。sudo_no_password_all = false - true場合、ユーザー$admin_userはパスワードなしでsudoを介してすべてのコマンドを実行できますsudo_no_password_commands = undef $admin_userがパスワードなしで実行できるsudoコマンドの追加リスト。 すべてのコマンドを許可することが実用的でない場合。sudo_env_keep = []ことができる追加の環境変数sshd_ports = 22デフォルトのSSHポートのリスト。 cfnetwork::describe_services cfsshを介してcfsshサービスを自動的に作成しますsshd_config_template = 'cfauth/sshd_config.epp' -OpenSSH構成ファイルを生成するための標準テンプレートをオーバーライドする機能
cfsystemモジュール
このモジュールは、隔離されたシステムだけでなく、許容される発信接続を制限し、倫理的なネットワーク標準を維持するために、DMZ内で標準サービスを提供する機能にも焦点を当てています-数十のシステムのチームを外部サービスに分割しないでください。
目標
certname応じたhostname設定-防止のため- 特定のDebianまたはUbuntuリリースのAPT設定を設定する
- デフォルトでは 、メインパッケージのAPTピニングは 1001に設定され、古いバージョンへのロールバックが必要な場合でも現在のパッケージのインストールを強制します(テストパッケージまたは不安定なパッケージが誤ってインストールされた場合に重要)
- 必要に応じて、キャッシュプロキシサーバーを構成する
- 1つの場所に複数のシステムを展開する場合にのみお勧めします
- apt-cacher-ngで使用
- 外部への発信接続を許可せずに、インフラストラクチャに他の更新をダウンロードするための単純なHTTP / HTTPSプロキシとして使用できます。 明らかな理由により、HTTPSはキャッシュされません。
- タイムゾーンを設定します。
推奨事項:好みと色ですが、UTCはデフォルトで多くの問題を解決します-私は管理者と開発者の両方として話しています。 - 連続時間同期を設定します
- 必要に応じて、他のマシンがこのシステムを時間基準として使用できるようにします。
SMTP設定を設定する
- 必要に応じて、ログインとパスワードでスマートホストを指定します
- 必要に応じて、他のローカルマシンがシステムメッセージを集中的に転送できるようにします
注:これは、ネットワークセキュリティ、スマートホストへのアクセスまたは正しいDNS設定などの点で便利です。
cfnetwork APIを使用して必要なすべてのネットワークフィルタールールをcfnetworkする- etckeeper、curl、htop、tree、ethtool、iftop、netcat、netstat-nat、conntrack、telnet、screen、apticron、chkrootkit、rkhunterなど、ユーティリティの標準リストに含まれていないさまざまな管理ツールをインストールします。 、デブサムなど (完全ではなく、拡張されます、構成オプションが追加される場合があります)
cf_location設定で使用するのに便利なcf_locationおよびcf_location_pool特別なファクトを設定および取得します。- デフォルトのシステムパラメータの設定
- SSDおよび仮想ディスクのnoop I / Oスケジューラーの強制インストール(ゲストシステム上)
- /etc/rc.localにカスタムコマンドを追加する機能
- すべての可能なロケールのインストールと1つの標準の選択(デフォルトではen_US.UTF-8)
- カーネルのバージョンがインストールされている最新のものと一致しない場合、再起動の毎日のチェック
- puppet.confクライアントの強制更新
- / opt / codingfuture / binの下にインストールされ、シェルおよびCshパスに追加されるヘルパースクリプトのセット:
- cf_clear_email_queue-送信のためにシステムキューからすべてのレターを削除する
- cf_clear_frozen_emails-送信キューから凍結メッセージのみを削除
- cf_send_test_email-管理者アドレスにテストレターを送信します
- cf_kernel_version_check-実行中のカーネルのバージョンとインストールされている最新のバージョンの不一致を確認します
クラスcfsystem
ネストされたクラスはすべて自動的に追加されます。
allow_nfs = false許可されていない場合、デフォルトのRPCとNFSを切り取りますadmin_email = undefシステム通知用のメールアドレスrepo_proxy = undefシステムパッケージをダウンロードするためのHTTP / HTTPSプロキシサーバーをインストールする
host -IPまたは名前port -TCPポート
add_repo_cacher = false $service_faceクライアントを受け入れるプロキシサーバーを設定しますservice_face = 'any' cfnetwork::iface - cfnetwork::ifaceサービスが有効な場合にクライアントをリッスンするcfnetwork::ifaceインターフェイスntp_servers = [ 'pool.ntp.org' ] -同期用のNTPサーバーのリストadd_ntp_server = false $service_faceクライアントを受け入れるNTPサーバーを設定しますtimezone = 'Etc/UTC'ゾーンapt_purge - apt::purge渡され、リポジトリとパッケージ設定の管理されていない設定をすべて削除しますapt_update - apt::update渡されます。 デフォルトでは、毎日300秒のタイムアウトが設定されています。apt_pin = 1001標準パッケージの優先度。 追加のリポジトリが$ apt_pin + 1として追加されます(1001> =強制ダウングレード)apt_backports_pin = 600設定しない場合= = $ apt_pin> 1000の場合、パッケージは自動的に古いバージョンにロールバックされます( セキュリティアップデートのサポートが制限されているため 、これがデフォルトです)real_hdd_scheduler = 'deadline'実際のハードドライブのデフォルトのI / Oスケジューラー。 SSDとvirtualkaの場合、常に何もしません。rc_local = undefオプションのコマンドリストpuppet_host = "puppet.${::trusted['domain']}" -Puppet Serverアドレスpuppet_cahost = $puppet_host -Puppet CAアドレスpuppet_env = $::environment -現在の環境(通常はproduction環境)puppet_use_dns_srv = false - DNS SRVレコードを使用して$puppet_hostおよび$puppet_cahostを検出するかどうかlocale = 'en_US.UTF-8'デフォルトのロケール
クラスcfsystem::hierapool
hiera.yamlで階層を設定するのに便利なファクトのインストールとサポート。
cf_locationは、本質的に物理データセンターの連想名です。 これに基づいて、APTパッケージリポジトリなどのアドレスを設定すると便利です。cf_location_poolサーバーの特定のグループは、特定の場所にある別のDMZグループを意味します。
例:
--- :backends: - yaml :hierarchy: - "%{::trusted.domain}/%{::trusted.hostname}" - "%{::trusted.domain}" - "%{::cf_location}/%{::cf_location_pool}" - "%{::cf_location}" - common :merge_behavior: deeper :yaml: :datadir:
パラメータ:
location = undef /etc/cflocation場合、 /etc/cflocation保存しlocation = undefpool = undef /etc/cflocationpool指定されている場合、 /etc/cflocationpool保存します
クラスcfsystem::email
システム通知の送信を構成します。
smarthost = undef -SMTPのスマートホストを設定しますsmarthost_login = undef undef-必要に応じてスマートホストのログインsmarthost_password = undef undef-必要に応じてスマートホストのパスワードrelay_nets = <private subnets> -このシステムを介して文字を転送することを許可されているネットワークのリスト(単独では含まれません)listen_ifaces = undef - listen_ifaces = undefの名前のcfnetwork::iface文字を送信するためにクライアントをリッスンするcfnetwork::ifaceインターフェイスdisable_ipv6 = true -IPv6を無効にします-Exim4構成に直接進みます。
注:SMTPにIPv6を使用することは、まだ悪い考えです。
クラスcfsystem::sysctl
vm_swappiness = 1 (%)、デフォルトでスワップの使用を最小限に減らします。
この機能はまだ完全ではなく、拡張される可能性があります。
クラスcfsystem::debian
Debian固有:
apt_url = 'http://httpredir.debian.org/debian'ベースアドレス
注意:apt-cacher-ngの問題に気づきました-インフラストラクチャに使用する場合は、fixedを指定することをお勧めしますsecurity_apt_url = 'http://security.debian.org/' Security APTのベースアドレスrelease = 'jessie'-リリース名
クラスcfsystem::ubuntu
Ubuntuに固有:
apt_url = 'mirror://mirrors.ubuntu.com/mirrors.txt'ベースアドレスrelease = 'wily'リリース名
タイプcfsystem::debian::debconf
標準packageタイプのラッパーですが、Debian Configのイデオロギー的に正しい構成をサポートしています。
package = $titleの名前ensure = present - packageconfig = [] debconf-set-selections構成オプション
生きている例
Vagrantでのインフラストラクチャの完全な展開については、 こちらをご覧ください 。
ヒエラ設定
--- classes: - cfsystem # `cf_location` `cf_location_pool` # , cfsystem::hierapool::location: 'somelocation' cfsystem::hierapool::pool: 'somepool' cfauth::admin_user: vagrant # mkpasswd -m sha-512: 'vagrant' cfauth::admin_password: '$6$W32Psa5h$l7iIrVFdG.6SRta86n1GlDcMBapDP3fpzLD4F2Vkz2xTfd2GFg34h5CEBH3JifiVRszumAteGDLXZEbp2bx3Z0' cfauth::sudo_no_password_all: true cfauth::admin_auth_keys: data_test: key: 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDiruOsKA2xTeITRnmLlWph1xNdyoX7cufWU48737E8KQSltRZEeyyLKKPR0L+XTwrvpIhwymikP+7K77KMF8yEg9f98FaYtxGdEvPqGVO7Dezdg3eQmQzYce0/wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ==' options: - 'from="10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"' # IP cfauth::admin_hosts: - '10.0.0.0/8' - '192.168.0.0/16' - '172.16.0.0/12' # APT , NTP SMTP Smarthost cfsystem::repo_proxy: host: maint.example.com port: 3142 cfsystem::ntp_servers: 'maint.example.com' cfsystem::email::smarthost: 'maint.example.com' # 'maint.example.com' #=================================================== cfsystem::add_repo_cacher: true cfsystem::add_ntp_server: true cfsystem::ntp_servers: - 0.debian.pool.ntp.org - 1.debian.pool.ntp.org - 2.debian.pool.ntp.org - 3.debian.pool.ntp.org cfsystem::email::smarthost: cfsystem::email::listen_ifaces: 'main' / wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ ==' --- classes: - cfsystem # `cf_location` `cf_location_pool` # , cfsystem::hierapool::location: 'somelocation' cfsystem::hierapool::pool: 'somepool' cfauth::admin_user: vagrant # mkpasswd -m sha-512: 'vagrant' cfauth::admin_password: '$6$W32Psa5h$l7iIrVFdG.6SRta86n1GlDcMBapDP3fpzLD4F2Vkz2xTfd2GFg34h5CEBH3JifiVRszumAteGDLXZEbp2bx3Z0' cfauth::sudo_no_password_all: true cfauth::admin_auth_keys: data_test: key: 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDiruOsKA2xTeITRnmLlWph1xNdyoX7cufWU48737E8KQSltRZEeyyLKKPR0L+XTwrvpIhwymikP+7K77KMF8yEg9f98FaYtxGdEvPqGVO7Dezdg3eQmQzYce0/wlgLXn0GJa2TcrG7lvSnHkCjbOV5lRWP5vY92skYQHhuwtMgtQ==' options: - 'from="10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"' # IP cfauth::admin_hosts: - '10.0.0.0/8' - '192.168.0.0/16' - '172.16.0.0/12' # APT , NTP SMTP Smarthost cfsystem::repo_proxy: host: maint.example.com port: 3142 cfsystem::ntp_servers: 'maint.example.com' cfsystem::email::smarthost: 'maint.example.com' # 'maint.example.com' #=================================================== cfsystem::add_repo_cacher: true cfsystem::add_ntp_server: true cfsystem::ntp_servers: - 0.debian.pool.ntp.org - 1.debian.pool.ntp.org - 2.debian.pool.ntp.org - 3.debian.pool.ntp.org cfsystem::email::smarthost: cfsystem::email::listen_ifaces: 'main'
UPD 2016-02-18:
- ディスクI / Oスケジューラーの自動構成の説明を追加
- /etc/rc.localでの任意のコマンドのサポート
UPD 2016-03-12:
- APTピニング管理
- ロケール管理
- カーネルのバージョンがインストールされている最新のものと一致しない場合の再起動の確認
- 以前に文書化されていないEximのヘルパースクリプトのセット
- Puppet Agent構成オプション
- タイプcfsystem :: debian :: debconf
sudo環境変数のサポートが追加されました