어떻게 구름ci/gcp에서 다중 노드 모듈을 이식하고 실행합니까
10035 단어 developmentmodulesmodulecloudci
GCP의 다중 노드 모듈
소개하다.
puppet 용어에서 통합 테스트는 많은 VM/컨테이너를 설정하고 상호 작용을 테스트하는 곳입니다.이 가능하다, ~할 수 있다,...
설계
다음 워크플로우를 사용하여 클라우드 CI/GCP에서 다중 노드 모듈을 실행합니다.
공급하다
Litmus에서는 작업을 통해 vm/컨테이너를 구성할 수 있습니다.우리는 테스트 환경을 가속화하기 위해 공급 모듈available tasks을 사용한다.런타임 시 리트머스 인벤토리가 생성됩니다.이 vm/용기와 통신할 수 있는yaml 파일 bolt 과 serverspec 을 허용합니다.
우리는 어떻게 서로 다른 vm/용기를 구분합니까?프로비저닝 모듈의 프로비저닝 작업을 통해 볼트 프로비저닝 파일에 임의의 키/쌍을 추가할 수 있습니다.볼트 변수를 사용하면 사용자가 한 기계와 연결된 여러 개의 라벨을 가질 수 있다.
수동 또는 볼트 계획을 통해 볼트 공급 임무를 운행하면 우리는 기계를 표시할 수 있다.
Example_websphere_provision_plan
구성된 시스템 설정
검수 테스트에서 리트머스의 설치는 세 가지 일에 의존한다.
공급 계획 예
plan websphere_application_server::provision_machines(
Optional[String] $using = 'abs',
Optional[String] $image = 'centos-7-x86_64'
) {
# provision machines, set roles
['server', 'appserver', 'dmgr', 'ihs'].each |$role| {
run_task("provision::${using}", 'localhost', action => 'provision', platform => $image, vars => "role: ${role}")
}
}
spec/spec\u helper\u acceptance\u local을 사용할 수 있습니다.rb는 테스트 모듈에 필요한 추가 설정에 사용됩니다.하나의 예puppetlabs-websphere_application_server실행 테스트
우리는 통합 환경에서 실행될 테스트를 식별하기 위해 rspec 표시와 라크 작업을 사용합니다.디테일을 살펴봅시다.
describe 'Install the websphere dmgr', :integration do
before(:all) do
@agent = WebSphereHelper.dmgr_host
WebSphereInstance.install(@agent)
WebSphereDmgr.install(@agent)
end
it 'is installed' do
expect(WebSphereHelper.remote_file_exists(@agent, WebSphereConstants.dmgr_status))
expect(WebSphereHelper.remote_file_exists(@agent, WebSphereConstants.ws_admin))
end
end
require 'rspec/core/rake_task'
namespace :websphere_application_server do
RSpec::Core::RakeTask.new(:integration) do |t|
t.pattern = 'spec/acceptance/ **{,/*/** }/*_spec.rb'
t.rspec_opts = "--tag integration"
end
end
puppetlabs-websphere_application_server
puppetlabs-kubernetes
대상 노드 식별 예
context 'application deployment' do
before(:all) { change_target_host('controller') }
after(:all) { reset_target_host }
it 'can deploy an application into a namespace and expose it' do
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl create -f /tmp/nginx.yml') do |r|
expect(r.stdout).to match(/my-nginx created\nservice\/my-nginx created\n/)
end
end
bundle exec rake websphere_application_server:integration
찢어지다우리는 기존의 공급 임무를 사용하여 모든 공급된 기계를 철거한다.
bundle exec rake litmus:tear_down
저희가 다중 노드 테스트를 사용할 수 있는 다양한 장면을 보여드릴게요.
여러 명의 괴뢰 스파이
설정 중, 우리는 많은 puppet 에이전트를 설치하고 테스트를 실행합니다.
명령하다
bundle install --path .bundle/gems/ --jobs 4
bundle exec rake spec_prep
bundle exec bolt --modulepath spec/fixtures/modules plan run ntp::provision_gcp
bundle exec rake litmus:install_agent
bundle exec rake litmus:install_module
bundle exec rake ntp::integration
bundle exec rake 'litmus:tear_down'
예제puppetlabs-ntp허수아비 서버와 에이전트
설정 중, 우리는puppet 서버와puppet 에이전트가 있고, 하나의 모듈을 설치하여 테스트를 실행합니다.우리는 볼트 계획을 사용하여 여러 개의 노드를 설정할 수 있으며, 각 노드마다 캐릭터가 표시되어 있다.공급 모듈에 새 task 가 오픈소스 puppet 서버를 설치합니다.
명령하다
bundle install --path .bundle/gems/ --jobs 4
bundle exec rake spec_prep
bundle exec bolt --modulepath spec/fixtures/modules plan run kubernetes::provision_cluster
bundle exec bolt --modulepath spec/fixtures/modules -i ./spec/fixtures/litmus_inventory.yaml plan run kubernetes::puppetserver_setup
bundle exec rake litmus:install_agent
bundle exec rake litmus:install_module
bundle exec rake kubernetes::integration
bundle exec rake 'litmus:tear_down'
예제puppetlabs-kubernetesPE 및 대리점
설정 중, 우리는PE 서버와puppet 에이전트가 있고, 모듈을 설치하여 테스트를 실행합니다.우리는 볼트 계획을 사용하여 여러 개의 노드를 설정할 수 있으며, 각 노드마다 캐릭터가 표시되어 있다.puppet-deploy -PE 모듈에 PE 설치 작업이 있습니다.provision_master/agents
명령하다
bundle install --path .bundle/gems/ --jobs 4
bundle exec rake spec_prep
bundle exec bolt --modulepath spec/fixtures/modules plan run ntp::provision_gcp
bundle exec bolt --modulepath spec/fixtures/modules -i ./spec/fixtures/litmus_inventory.yaml plan run ntp::pe_server
bundle exec bolt --modulepath spec/fixtures/modules -i ./spec/fixtures/litmus_inventory.yaml plan run ntp::pe_agent
bundle exec rake litmus:install_module
bundle exec rake ntp::integration
bundle exec rake 'litmus:tear_down'
예제puppetlabs-ntpPE 서버 설치 계획
plan ntp::pe_server(
Optional[String] $version = '2019.8.5',
Optional[Hash] $pe_settings = {password => 'puppetlabs'}
) {
# identify pe server node
$puppet_server = get_targets('*').filter |$n| { $n.vars['role'] == 'ntpserver' }
# install pe server
run_plan(
'deploy_pe::provision_master',
$puppet_server,
'version' => $version,
'pe_settings' => $pe_settings
)
}
puppet 에이전트 설치 계획plan ntp::pe_agent() {
# identify pe server and agent nodes
$puppet_server = get_targets('*').filter |$n| { $n.vars['role'] == 'ntpserver' }
$puppet_agent = get_targets('*').filter |$n| { $n.vars['role'] == 'ntpclient' }
# install agent
run_plan(
'deploy_pe::provision_agent',
$puppet_agent,
'master' => $puppet_server,
)
}
다중 노드 모듈 GitHub 운영 워크플로우 예
고마워요
TP 통합 테스트 분야에서 귀중한 일을 해 주셔서 감사합니다.감사Marty가 클라우드 CI에 PE를 설치하기 위해 한 일.
Reference
이 문제에 관하여(어떻게 구름ci/gcp에서 다중 노드 모듈을 이식하고 실행합니까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/puppet/how-to-port-and-run-multi-node-modules-in-cloud-ci-gcp-3pkl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)