開発環境のセットアップ:コーヒーの挽き目(部2)

開発環境のセットアップ こんにちは親愛なる読者!

今回は、Puppetを使用してさまざまなPHPベースのプロジェクトを操作するための個人環境を設定した結果を共有したいと思います。 この記事では、Puppet構成の調査および作成の過程で得られた結果について説明します。



この記事は、これを行う1つの方法を示すために書かれています。 私は行動を求めたくありませんが、私が遭遇したこと、私がしたこと、そしてそれをどう使うかだけを共有します。



記事は非常に長くなり、技術的なバイアスが生じます。 「カット」をお願いします。



少し前に、 「開発環境の設定:針仕事のサークル(パート1)」という記事を書きました。この記事では、プロジェクトの変更ごとに苦痛を説明しました。 この記事の準備中に、環境のいくつかのコンポーネントが追加および削除されました。 記事の最後に、モジュールへのリポジトリへのリンクがあります。このモジュールを分割して 、必要に応じて使用および変更できます。



目的:現在のプロジェクトの作業環境をすばやく構成する



目標は同じですが、少し追加します。自動化できる場合は、それを実行します。



人形



これは、さまざまなオペレーティングシステムの構成を管理するのに役立つ優れたツールです。



このツールは会社によって使用されているため、選択はこのツールで正確に行われました。DevOps/ NetOpsの舞台裏で何が起こっているのかを知る必要があります。



したがって、構成を説明する過程で、次のようになりました。



-PHP(5.6、7.x、各プロジェクトのプール、拡張機能、作曲家)

-NGINX(各プロジェクトのアップストリームPHP-FPM;シンプルな仮想ホスト設定)

-OpenSSL

-MySQL

-bind9

-NodeJS + NPM

-memcached

-redis

-ドッカー

-追加ソフトウェア:mc、htop、wget、curl



構成



実際の構成はプライベートリポジトリに保存するため、この記事で説明するトレーニングバージョンに慣れておくことをお勧めします。



注意:データリポジトリはそのまま配信されます。 プロジェクトのさらなる運命は、より柔軟な基盤または死ぬことです。



構成の松葉杖を開発するとき、私はPuppet Hierar10k (構成の展開に便利なツール)の機能を使用しました。



基本的に、パッケージのインストール、ファイルの作成、およびサービスの再起動を担当するコードは、「本番」ブランチにあります。 Puppet Hiera Iの機能を使用して、現在のノードの構成を構成する機会を提供しました。これは、作業マシンのFQDNによって決定されます。 したがって、構成例の1つがパスに沿って見つかります。



hieradata / nodes / dev.lo.yaml
--- # Node with all in one classes: - role::all composer: true projects: warface: - {name: 'www', php: php7.0} - {name: 'imageproxy', php: php5.6} cryengine: - {name: www, php: php7.1} - {name: shop, php: php7.1} - {name: forum, php: php5.6} php: versions: [php5.6, php7.0, php7.1, php7.2] packages: [ opcache, gd, bcmath, curl, intl, json, mbstring, mysql, readline, soap, sqlite3, tidy, xml, zip, codecoverage, codesniffer, igbinary, geoip, imagick, memcache, memcached, redis, xdebug, ssh2 ] tools: [imagemagick] bind9: dns: ['8.8.8.8', '8.8.4.4']
      
      







と組み合わせる



hieradata / common.yaml
 --- # Puppet Server Tuning puppet_enterprise::master::puppetserver::jruby_max_requests_per_instance: 0 classes: - role::default composer: true nginx: domain: "%{::fqdn}" projects: development: - name: 'www' php: 'php7.0' php: versions: [php7.0] packages: [ curl, mbstring, xml, json, intl, xdebug ] tools: [mc, htop, wget, curl] db: mysql: root_password: root remove_default_accounts: true override_options: {} bind9: dns: ['8.8.8.8', '8.8.4.4'] zone: "%{::fqdn}"
      
      







この構成の結果として、コンポーネントの初期リスト全体と、サーバー上の次の機能がインストールされます。



1)次のプロジェクトのNGINX + PHP-FPMの構成を作成しました。

-www.warface.lo (php7.0)

-imageproxy.warface.lo(php5.6)

-www.cryengine.lo (php7.1)

-shop.cryengine.lo(php7.1)

-forum.cryengine.lo(php5.6)

2)次のバージョンのPHPが適切なモジュールとともにインストールされます:5.6、7.0、7.1、7.2

3)imagemagickパッケージがインストールされます

4)OpenSSLを利用可能な最新バージョンに更新しました

5)MySQLルート/ルート

6)RedisおよびMemcachedサービス

7)Composer、NodeJS、およびNPMの最新バージョン

8)サーバーbind9 +その構成。これにより、* .loドメインの要求を現在のホストに「解決」できます。

9)Docker



構造



リポジトリ構造には、次の概念が組み合わされています。

マスターブランチ-制御レポcontrol-repo

生産ブランチ-「生産」の構成の説明



設置



起動プロセスは、いくつかの簡単な手順になります。



1)git + puppet + r10kをインストールします

2)「control-repo」を初期化する

2)r10kを使用して構成を拡張する

3)操り人形の適用



バッシュ
 #!/bin/bash echo "Initialize" # https://docs.puppet.com/puppet/5.1/install_linux.html # https://docs.puppet.com/puppet/5.1/puppet_platform.html wget --no-verbose https://apt.puppetlabs.com/puppet5-release-xenial.deb dpkg -i --force-confdef puppet5-release-xenial.deb rm -f puppet5-release-xenial.deb echo "[APT]: ====" apt-get update sudo apt-get upgrade -y apt install -o Dpkg::Options::="--force-confold" -y git puppet-agent r10k echo "[APT]: Puppet" export PATH=/opt/puppetlabs/bin:$PATH echo "Puppet version is $(puppet --version)" echo "[PUPPET]: Control Repo" git clone https://github.com/OxCom/puppet-php-skeleton-dev.git cp -rf ./puppet-php-skeleton-dev/* /etc/puppetlabs/puppet/ rm -rf ./puppet-php-skeleton-dev echo "[SSH]: ====" echo "[SSH]: Hosts" ssh-keygen -R bitbucket.org ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts ssh-keygen -R github.com ssh-keyscan github.com >> ~/.ssh/known_hosts echo "[PUPPET]: ====" echo "[PUPPET]: Running R10K" cd /etc/puppetlabs/puppet r10k deploy environment -p -v echo "[PUPPET]: Running puppet" puppet apply /etc/puppetlabs/puppet/environments/production/manifests/site.pp --confdir=/etc/puppetlabs/puppet --environment=production --environmentpath=/etc/puppetlabs/puppet/environments/
      
      







さらなる修正



以下は、現在の構成を改善してより柔軟にする方法のリストです。



-プロジェクトの展開プロセスを説明するクラスを追加します(git clone、特定の仮想ホスト、アプリケーション設定、データベース展開:ユーザー+スキーム+データ)

-Dockerのコンテナー起動クラスを追加する

-証​​明書の生成(NGINX + HTTPS)



実装は理想とはほど遠いものであり、常にルールに従うわけではありませんが、ここで強調したいことは次のとおりです。



-Puppetは接続された順番でのクラスの初期化を保証しないため、常に依存関係を考慮してください。

-クラスの動作を変更するhieraパラメーターで説明します。

-デフォルト設定を忘れないでください。

-車輪を再発明しないでください。おそらく、誰かが必要な機能をすでに作成している可能性があります。



便利なリンク



-Puppetドキュメント

-R10K

-Puppetモジュール

- パペットクックブック

- 開発環境のセットアップ:針仕事サークル(部1)



PS :リポジトリ内で改善できるものを見つけたら、それについて、そしてこれをどのように変更できるかを例またはリンクで私に書いてください。



All Articles