рдХрдардкреБрддрд▓реА рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреНрд▓рд╛рдЙрдб рдлреЙрд░реНрдореЗрд╢рди рдХреЗ рд╕рд╛рде рдСрдЯреЛрдХреИрдлрд┐рдЧреНрд░реЗрд╢рди

рдЫрд╡рд┐ рддреЛ рд╡рд╣ рджрд┐рди рдЖ рдЧрдпрд╛ рдЬрдм рдореБрдЭреЗ рдХреБрдХрдмреБрдХ, рд░реЗрд╕рд┐рдкреА, рдПрдХ рд╢реЗрдл рдХреА рдЫреБрд░реА рдФрд░ рдХреБрдЫ рдХрдардкреБрддрд▓реА рдХрд░рдиреА рдереАред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИ - рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ - рдСрдЯреЛрдкреЛрдлрд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрдардкреБрддрд▓реА рдЙрджреНрдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рддреЛ, рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред рдЗрд╕рдореЗрдВ рджреЛ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рдкрд╣рд▓рд╛ рд╣реИ FrontEnd, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдп IIS рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ BackEnd рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╡рд░реНрдХрд░ рд╕реЗрд╡рд╛ рдФрд░ MongoDB рдбреЗрдЯрд╛рдмреЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рджреЛрдиреЛрдВ рдШрдЯрдХ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рд╡рд░реНрдХрд░ рд╕реЗрд╡рд╛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб AWS S3 рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рдЬреЗрдирдХреАрдВрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рд░ рд░рд╛рдд рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реИред

рдХреНрд▓рд╛рдЙрдб рдлреНрд░реЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирд╛рдирд╛

рдХреНрд▓рд╛рдЙрдб рдлреЙрд░реНрдореЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЬреЛ рджреЛ рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛, рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЗрди рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрдкреЗрдЯ рдХреЛ рдХреИрд╕реЗ рдмрддрд╛рдпрд╛ рдЬрд╛рдПред
рдХрдардкреБрддрд▓реА рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЧреНрд░рд╛рд╣рдХ рдХреЗ hostname рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ AWS рдЕрдореЗрдЬрд╝реЕрди рд╣реЛрд╕реНрдЯрдирд╛рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдореБрдЭреЗ рдПрдХ рдкреЛрд╕реНрдЯ-рд╕реНрдЯрд╛рд░реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдорд╢реАрди рдХреЗ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдХрдардкреБрддрд▓реА рдПрдЬреЗрдВрдЯ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдлрд╡рд╛рд╣, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП - рдХрд╕реНрдЯрдо рдмрд╛рд╣рд░реА рддрдереНрдп ред рд╢реЗрдл рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рддрдереНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред
рд╡рд┐рдВрдбреЛрдЬ рдорд╢реАрди рдореЗрдВ рдЕрдкрдиреЗ рддрдереНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдмреИрдЯ рдпрд╛ ps1 рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ " C: \ ProgramData \ PuppetLabs \ facter \ facts.d \" рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
@echo off echo node_role=frontend echo app_version=Build1.2.0 

рдЬрд╣рд╛рдБ ServerRole рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рднреВрдорд┐рдХрд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реМрдВрдкреА рдЬрд╛рдПрдЧреА, рдФрд░ buildNumber рдЙрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ S3 AWS рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдлрд╛рдЗрд▓ рдХреНрд▓рд╛рдЙрдб рдлреЙрд░реНрдореЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред
DevEnv.tmpl
 { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Developers Stack", "Parameters" : { "KeyName" : { "Description" : "Key-pair name", "Type" : "String" }, "SuffixName" : { "Description" : "Suffix for all created resources", "Type" : "String" }, "FrontEndInstanceType" : { "Type" : "String", "Default" : "m1.small", "AllowedValues" : [ "m1.small", "m1.medium", "m1.large", "m1.xlarge"], "Description" : "EC2 instance type" }, "BackEndInstanceType" : { "Type" : "String", "Default" : "m1.small", "AllowedValues" : [ "m1.small", "m1.medium", "m1.large", "m1.xlarge"], "Description" : "EC2 instance type" }, "PuppetServer": { "Description" : "Puppet Server URL", "Type" : "String", "Default" : "ec2-231-231-123-123.us-west-2.compute.amazonaws.com" }, "Zone" : { "Type" : "CommaDelimitedList", "Description" : "The Availability Zone ", "Default" : "us-west-2c" }, "BuildVersion" : { "Type" : "String", "Description" : "Version of application build" }, "RoleName" : { "Type" : "String", "Description" : "Instance IAM role", "Default" : "WebInstance" }, "SecurityGroup" : { "Type" : "String", "Description" : "Default security group for stack", "Default" : "taws-security-group" } }, "Mappings" : { "WindowsInstanceType" : { "t1.micro" : { "Arch" : "64" }, "m1.small" : { "Arch" : "64" }, "m1.medium" : { "Arch" : "64" }, "m1.large" : { "Arch" : "64" }, "m1.xlarge" : { "Arch" : "64" } }, "WindowsRegionMap" : { "us-east-1" : { "AMI" : "ami-e55a7e8c" }, "us-west-2" : { "AMI" : "ami-1e53c82e" }, "us-west-1" : { "AMI" : "ami-b687b1f3" }, "eu-west-1" : { "AMI" : "ami-5f3ad728" }, "ap-southeast-1" : { "AMI" : "ami-96cd98c4" }, "ap-southeast-2" : { "AMI" : "ami-ab4a2daa" }, "ap-northeast-1" : { "AMI" : "ami-133fa329" }, "sa-east-1" : { "AMI" : "ami-bd3d9ba0" } } }, "Resources" : { "FrontEnd" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "WindowsRegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "InstanceType" : { "Ref" : "FrontEndInstanceType" }, "IamInstanceProfile" : { "Ref" : "RoleName" }, "SecurityGroups" : [{ "Ref" : "SecurityGroup" }], "Tags" : [ {"Key" : "Name", "Value" : { "Fn::Join" : ["",[{"Ref" : "SuffixName"},"-DEV-FrontEnd"]]}} ], "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<powershell>\n", "$MsiUrl = \"https://s3-us-west-2.amazonaws.com/mybucket/puppet.msi\"\n", "$downloadPath = \"c:\\puppet.msi\"\n", "$webClient = New-Object System.Net.WebClient\n", "$webClient.DownloadFile($MsiUrl, $downloadPath)\n", "$process = Start-Process -File $downloadPath -arg \"/qn /norestart\" -PassThru |wait-process\n", "$PublicHostName = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/public-hostname -Method Get\n", "Clear-Content 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\puppet.conf'\n", "Add-Content 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\puppet.conf' \"[main]\", \"runinterval=300\", \"certname=$PublicHostName\", \"server=",{ "Ref" : "PuppetServer" },"\", \"environment=",{ "Ref" : "PuppetEnvironment" },"\"\n", "Add-Content 'C:\\ProgramData\\PuppetLabs\\facter\\facts.d\\facts.bat' \"@echo off\", \"echo node_role=frontend\", \"echo app_version=",{ "Ref" : "BuildVersion" },"\"\n", "Restart-Service pe-puppet\n", "$MsiUrl = \"https://s3-us-west-2.amazonaws.com/mybucket/7zip.msi\"\n", "$downloadPath = \"c:\\7zip.msi\"\n", "$webClient = New-Object System.Net.WebClient\n", "$webClient.DownloadFile($MsiUrl, $downloadPath)\n", "$process = Start-Process -File $downloadPath -arg \"/qn \" -PassThru |wait-process\n", "</powershell>\n" ]]}} } }, "BackEnd" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "WindowsRegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "InstanceType" : { "Ref" : "BackEndInstanceType" }, "IamInstanceProfile" : { "Ref" : "RoleName" }, "SecurityGroups" : [{ "Ref" : "SecurityGroup" }], "Tags" : [ {"Key" : "Name", "Value" : { "Fn::Join" : ["",[{"Ref" : "SuffixName"},"-DEV-BackEnd"]]}} ], "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<powershell>\n", "$MsiUrl = \"https://s3-us-west-2.amazonaws.com/mybucket/puppet.msi\"\n", "$downloadPath = \"c:\\puppet.msi\"\n", "$webClient = New-Object System.Net.WebClient\n", "$webClient.DownloadFile($MsiUrl, $downloadPath)\n", "$process = Start-Process -File $downloadPath -arg \"/qn /norestart\" -PassThru |wait-process\n", "$PublicHostName = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/public-hostname -Method Get\n", "Clear-Content 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\puppet.conf'\n", "Add-Content 'C:\\ProgramData\\PuppetLabs\\puppet\\etc\\puppet.conf' \"[main]\", \"runinterval=300\", \"certname=$PublicHostName\", \"server=",{ "Ref" : "PuppetServer" },"\", \"environment=",{ "Ref" : "PuppetEnvironment" },"\"\n", "Add-Content 'C:\\ProgramData\\PuppetLabs\\facter\\facts.d\\facts.bat' \"@echo off\", \"echo node_role=backend\", \"echo app_version=",{ "Ref" : "BuildVersion" },"\"\n", "Restart-Service pe-puppet\n", "$MsiUrl = \"https://s3-us-west-2.amazonaws.com/mybucket/7zip.msi\"\n", "$downloadPath = \"c:\\7zip.msi\"\n", "$webClient = New-Object System.Net.WebClient\n", "$webClient.DownloadFile($MsiUrl, $downloadPath)\n", "$process = Start-Process -File $downloadPath -arg \"/qn \" -PassThru |wait-process\n", "</powershell>\n" ]]}} } } }, "Outputs" : { "FrontEndPublicDnsName" : { "Description" : "Public IP address of FrontEnd", "Value" : { "Fn::Join" : ["",[{ "Fn::GetAtt" : [ "FrontEnd", "PublicDnsName" ] }]]} }, "BackEndPublicDnsName" : { "Description" : "Public IP address of BackEnd", "Value" : { "Fn::Join" : ["",[{ "Fn::GetAtt" : [ "BackEnd", "PublicDnsName" ]}]]} } } } 


рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░:

IAM рд░реЛрд▓ рдФрд░ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдЧреНрд░реБрдк рдХреЛ рдПрдХ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдФрд░ рднреА рд╕рд╣реА рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд╕рдордЭ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
UserData рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдХрдардкреБрддрд▓реА рдПрдЬреЗрдВрдЯ, 7zip рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрдардкреБрддрд▓реА редconf рдФрд░ facts.bat рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдХреНрд▓рд╛рдЙрдб рдлрд╝реЙрд░реНрдореЗрд╢рди рдХреЗ рд╕рд╛рде, рдпрд╣ рдкрдкреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

Puppet Server Enterprise рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдХрдардкреБрддрд▓реА рд╕рд░реНрд╡рд░ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рдЕрдирдЬрд╝рд┐рдк рдХрд░рдирд╛ рдФрд░ рдХрдардкреБрддрд▓реА-рд╕рд░реНрд╡рд░-рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЪрд▓рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдВрдЬреАрдХрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ /etc/puppetlabs/puppet/autosign.conf рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 * 

рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВред рдореЙрдбреНрдпреВрд▓, рдпрд╣ рдмрд╛рд╡рд░реНрдЪреА рдореЗрдВ рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм рдХреА рддрд░рд╣ рд╣реИред рд╡реЗ / etc / рдХрдардкреБрддрд▓реА / рдХрдардкреБрддрд▓реА / рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред
рд╕рд░рд▓реАрдХреГрдд рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛:

рдкрд╣рд▓реЗ, IIS рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PuppetLabs рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝реЗрдВред
 puppet module install dism puppet module install opentable-iis 

рдЕрдм рдЖрдкрдХреЛ opentable-iis рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд░реВрдк рдХреЛ рдереЛрдбрд╝рд╛ рдореЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛
/etc/puppetlabs/puppet/modules/nodes/manifests/init.pp
рдХрдХреНрд╖рд╛ рдЖрдИрд╕ {
iis :: manage_app_pool {"$ {fqdn}":
enable_32_bit => рд╕рддреНрдп,
рдкреНрд░рдмрдВрдзрд┐рдд_рдкреНрд░рд╡рдг_рд╡рд┐рд░реЛрдз => 'v4.0',
} ->

iis :: manage_site {"$ {fqdn}":
site_path => 'C: \ MyAppPath',
рдкреЛрд░реНрдЯ => '80',
ip_address => '*',
host_header => "$ {fqdn}",
app_pool => "$ {fqdn}"
}

}

рдореБрдЭреЗ рд╕рд╛рдд рдореЙрдбреНрдпреВрд▓ рдорд┐рд▓реЗ (рд╢рд╛рдпрдж рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдФрд░ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА)ред
  1. рдиреЛрдбреНрд╕ - рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдиреЛрдб_рд░реЛрд▓реЗ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрдЧрд╛, рдЕрдЧрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛
    /etc/puppetlabs/puppet/modules/nodes/manifests/init.pp
    рдХрдХреНрд╖рд╛ рдиреЛрдбреНрд╕ {
    рдЕрдЧрд░ "$ {node_role}" == "рдмреИрдХреЗрдВрдб" {
    рдмреИрдХрдПрдВрдб рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
    }
    рдЕрдЧрд░ "$ {node_role}" == "рдлреНрд░рдВрдЯреЗрдВрдб" {
    рдлреНрд░рдВрдЯрдПрдВрдб рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
    }
    }

  2. getbuild - рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ AWS S3 рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    /etc/puppetlabs/puppet/modules/getbuild/manifests/init.pp
    рдХрдХреНрд╖рд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг {
    рдлрд╝рд╛рдЗрд▓ {'c: \ config':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => 'рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛'
    } ->
    рдлрд╝рд╛рдЗрд▓ {'c: \ Build':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => 'рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛'
    } ->
    рдЕрдорд▓ {'download_build':
    рдмрдирд╛рддрд╛ рд╣реИ => "c: \\ config \\ $ {app_version}",
    рдкрде => $ :: рдкрде,
    рдХрдорд╛рдВрдб => "рд╢рдХреНрддрд┐рдпрд╛рдВред exe -executionpolicy рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдкреНрд░рд╛рд░рдВрдн-рдмрд┐рдЯрд╕реНрдЯреНрд░рд╛рдВрд╕рдлрд░-рд╕реНрд░реЛрдд s3-us-west-2.amazonaws.com/mybucket $ {app_version} -Destination 'c: \\ config \\'",
    } ->
    рдирд┐рд╖реНрдкрд╛рджрди {'app_install':
    рдмрдирд╛рддрд╛ рд╣реИ => "c: \\ Build \ CustomBackendService.exe.config",
    рдХрдорд╛рдВрдб => "\" c: \\ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓реЗрдВ \\ 7-Zip \\ 7z.exe \ "xc: \\ config \\ $ {app_version} -oC: \\ Build"
    }

    }

  3. рдореЛрдВрдЧреЛрдбрдм - рдореЛрдВрдЧреЛрдмреАрдбреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓
    /etc/puppetlabs/puppet/modules/mongodb/manifests/init.pp
    рд╡рд░реНрдЧ рдордВрдЧреЛрд▓ {
    рдлрд╝рд╛рдЗрд▓ {'c: / config':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛,
    } ->
    рдлрд╝рд╛рдЗрд▓ {'c: /config/mongodb.zip':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => рдлрд╝рд╛рдЗрд▓,
    рдореЛрдб => '0777',
    source => 'рдХрдардкреБрддрд▓реА: ///modules/mongodb/mongodb-win32-x86_64-v2.4-latest.zip',
    } ->
    рдлрд╝рд╛рдЗрд▓ {'c: / MongoDB':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛,
    } ->
    рдлрд╝рд╛рдЗрд▓ {'c: / MongoDB / bin':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛,
    } ->
    рдлрд╝рд╛рдЗрд▓ {'c: / MongoDB / рдбреЗрдЯрд╛':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛,
    } ->
    рдлрд╝рд╛рдЗрд▓ {'c: / MongoDB / рд▓реЙрдЧ':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ => рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛,
    } ->
    рдирд┐рд╖реНрдкрд╛рджрд┐рдд {'рдордВрдЧреЛрд▓реЛрдб-рдЕрдирдЬрд╝рд┐рдк':
    => 'c: /MongoDB/bin/mongod.exe' рдмрдирд╛рддрд╛ рд╣реИ,
    рдХрдорд╛рдВрдб => '' c: \\ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╛рдЗрд▓реНрд╕ \\ 7-Zip \\ 7z.exe "ec: \\ config \ mongodb.zip -oC: \\ MongoDB \\ bin ',)
    } ->
    рдирд┐рд╖реНрдкрд╛рджрд┐рдд {'рдореЛрдВрдЧреЛрдбрдм-рдЗрдВрд╕реНрдЯреЙрд▓':
    рдмрдирд╛рддрд╛ рд╣реИ => 'c: /MongoDB/logs/mongodb.log',
    рдХрдорд╛рдВрдб => '' c: \\ MongoDB \\ mongod.exe "--dbpath = c: \\ MongoDB \\ рдбреЗрдЯрд╛ --рдкреЛрд░реНрдЯ 27017 --logpath = c: \\ MongoDB \ рд▓реЙрдЧ \\ \ nongodb.log - install --serviceName mongodb --serviceDisplayName "MongoDB рд╕рд░реНрд╡рд░" --serviceDescription "MongoDB рд╕рд░реНрд╡рд░" ';
    } ->
    рдирд┐рд╖реНрдкрд╛рджрд┐рдд {'рдореЛрдВрдЧреЛрдбрдм-рд░рди':
    рдкрде => $ :: рдкрде,
    рдХрдорд╛рдВрдб => 'рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ ..exe рд╕реНрдЯрд╛рд░реНрдЯ-рд╕рд░реНрд╡рд┐рд╕ рдореЛрдВрдЧреЛрдбрдм'
    }
    }

  4. рдПрдкреАрдЖрдИ - рдлреНрд░рдВрдЯрдПрдб рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓
    /etc/puppetlabs/puppet/modules/api/manifests/init.pp
    рдХрдХреНрд╖рд╛ рдЖрдкреА {

    рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛

    рдкрддрди {'IIS-WebServerRole':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ => рд╡рд░реНрддрдорд╛рди,
    } ->

    рдкрддрди {'IIS-WebServer':
    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ => рд╡рд░реНрддрдорд╛рди,
    рдЖрд╡рд╢реНрдпрдХрддрд╛ => рдЦрд╛рд░рд┐рдЬ ['IIS-WebServerRole'],
    }

    }

  5. рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ - рдмреИрдХрдПрдВрдб рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓
    /etc/puppetlabs/puppet/modules/worker/manifests/init.pp
    рдХреНрд▓рд╛рд╕ рд╡рд░реНрдХрд░ {
    рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛
    рдирд┐рд╖реНрдкрд╛рджрд┐рдд {'service_install':
    рдмрдирд╛рддрд╛ рд╣реИ => "c: \\ Build \\ Custom.AWS.BackendService.InstallLog",
    рдХрдорд╛рдВрдб => "c: \\ Build \\ Custom.AWS.BackendService.exe -install",
    } ->
    рдирд┐рд╖реНрдкрд╛рджрд┐рдд {'рд╕реЗрд╡рд╛-рд░рди':
    рдкрде => $ :: рдкрде,
    рдЖрджреЗрд╢ => 'рд╢рдХреНрддрд┐рдпрд╛рдВред exe-service Custom.AWS.Backend'
    }
    }

  6. рдлреНрд░рдВрдЯреЗрдВрдб - рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддрд╛ рд╣реИ
    /etc/puppetlabs/puppet/modules/frontend/manifests/init.pp
    рдХреНрд▓рд╛рд╕ рдлреНрд░рдВрдЯреЗрдВрдб {
    рдЖрдкреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
    рдЖрдИрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
    }

  7. рдмреИрдХрдПрдВрдб - рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
    /etc/puppetlabs/puppet/modules/backend/manifests/init.pp
    рдХреНрд▓рд╛рд╕ рдмреИрдХреЗрдВрдб {
    рдореЛрдВрдЧреЛрдбрдм рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
    рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
    }



рдЕрдкрдиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрджрд┐ рдмрдирд╛рддрд╛ рд╣реИ рд╡рд┐рдХрд▓реНрдк рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрд╕рд╛рдзрди рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ:
 exec { 'mongodb-unzip': creates => 'c:/MongoDB/bin/mongod.exe', command => '"c:\\Program Files\\7-Zip\\7z.exe" ec:\\config\mongodb.zip -oC:\\MongoDB\\bin', } 

рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ c: /MongoDB/bin/mongod.exe рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рд╕рдВрдЧреНрд░рд╣ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ CI рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЗрдирдХрд┐рдВрд╕ , рд╡рд╣рд╛рдВ рдХреНрд▓рд╛рдЙрдб рдлреЙрд░реНрдореЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рд╡рд╣ рд╕рдм рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА ...
рдпрджрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рдХрдардкреБрддрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In208710/


All Articles