├── .gitallowed ├── .github ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── publish.yml ├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── Makefile ├── NOTICE ├── README.md └── workshop ├── archetypes └── default.md ├── config ├── _default │ └── config.toml ├── development │ └── config.toml └── ghpages │ └── config.toml ├── content ├── 2021-workshop │ ├── 10-prerequisites │ │ ├── 100-installation │ │ │ ├── 20-service-catalog-factory.md │ │ │ ├── 30-service-catalog-puppet.md │ │ │ └── _index.md │ │ └── _index.md │ ├── 100-removing-the-default-networking │ │ ├── 20-creating-the-lambda.md │ │ ├── 30-deploying-the-lambda.md │ │ ├── 40-invoking-the-lambda.md │ │ ├── 50-asserting-the-resources-are-removed.md │ │ └── _index.md │ ├── 200-provisioning-a-vpc │ │ ├── 20-creating-the-stack.md │ │ ├── 30-provisioning-the-stack.md │ │ └── _index.md │ ├── 300-provisioning-subnets │ │ ├── 15-using-service-catalog.md │ │ ├── 20-using-terraform.md │ │ └── _index.md │ ├── 400-self-service │ │ ├── 15-using-service-catalog.md │ │ └── _index.md │ └── _index.md ├── 40-reinvent2019 │ ├── 100-task-1 │ │ ├── 100-create-the-control.md │ │ ├── 200-provision-the-control.md │ │ ├── _index.md │ │ └── artefacts │ │ │ ├── factory │ │ │ ├── completed.yaml │ │ │ └── create-the-version--version-only.yaml │ │ │ ├── orchestrator │ │ │ ├── manifest-accounts-only-sample.yaml │ │ │ ├── manifest-accounts-only.yaml │ │ │ ├── manifest-all.yaml │ │ │ └── manifest-launches-only.yaml │ │ │ └── product.template.yaml │ ├── 150-task-2 │ │ ├── 100-create-the-control.md │ │ ├── 200-provision-the-control.md │ │ ├── 300-create-the-product.md │ │ ├── _index.md │ │ └── artefacts │ │ │ ├── factory │ │ │ ├── completed.yaml │ │ │ ├── completed_second_time.yaml │ │ │ ├── create-the-version--version-only.yaml │ │ │ ├── create-the-version--version-only_second_time.yaml │ │ │ ├── new_portfolio_details_second_time.yaml │ │ │ ├── new_product_details.yaml │ │ │ └── new_product_details_second_time.yaml │ │ │ ├── orchestrator │ │ │ ├── manifest-all-second_time.yaml │ │ │ ├── manifest-all.yaml │ │ │ ├── manifest-launches-only.yaml │ │ │ └── manifest-shares-addition.yaml │ │ │ ├── product.template.yaml │ │ │ ├── product_second_time.template.yaml │ │ │ └── product_third_time.template.yaml │ ├── 200-conclusion │ │ └── _index.md │ ├── 30-prerequisites │ │ ├── 100-running-yourself.md │ │ └── _index.md │ └── _index.md ├── 999-further_reading │ └── _index.md ├── _index.md ├── design-considerations │ ├── _index.md │ ├── account-tagging │ │ └── _index.md │ ├── multi-account-strategy │ │ ├── _index.md │ │ └── starter-framework.md │ ├── portfolio-management │ │ └── _index.md │ ├── selecting-a-factory-account │ │ └── _index.md │ ├── using-iam-and-scp-effectively │ │ └── _index.md │ └── using-parameters-in-the-real-world │ │ └── _index.md ├── every-day-use │ ├── 100-creating-a-product │ │ ├── 100-define-the-product.md │ │ ├── 300-add-the-source-code.md │ │ ├── 305-creating-codestar-pipelines.md │ │ ├── 310-creating-s3-pipelines.md │ │ ├── _index.md │ │ └── artefacts │ │ │ ├── factory │ │ │ ├── create-the-product--product-only.yaml │ │ │ ├── create-the-version--product_and_version.yaml │ │ │ └── create-the-version--version-only.yaml │ │ │ └── product.template.yaml │ ├── 110-deleting-a-product │ │ ├── 100-disabling-the-product-versions.md │ │ ├── 300-deleting-the-product-pipeline.md │ │ ├── _index.md │ │ └── artefacts │ │ │ ├── factory │ │ │ ├── create-the-product--product-only.yaml │ │ │ ├── create-the-version--product_and_version.yaml │ │ │ └── create-the-version--version-only.yaml │ │ │ └── product.template.yaml │ ├── 150-creating-a-portfolio │ │ ├── _index.md │ │ └── artefacts │ │ │ └── factory │ │ │ ├── completed.yaml │ │ │ ├── create-the-portfolio--portfolio_only.yaml │ │ │ └── create-the-portfolio--portfolio_product_and_version.yaml │ ├── 180-adding-a-product-to-a-portfolio │ │ ├── _index.md │ │ └── artefacts │ │ │ ├── factory │ │ │ ├── completed.yaml │ │ │ ├── create-the-portfolio--portfolio_only.yaml │ │ │ └── create-the-portfolio--portfolio_product_and_version.yaml │ │ │ └── orchestrator │ │ │ ├── manifest-accounts-only.yaml │ │ │ ├── manifest-all.yaml │ │ │ └── manifest-launches-only.yaml │ ├── 190-creating-a-manifest │ │ └── _index.md │ ├── 192-adding-an-account │ │ ├── _index.md │ │ └── artefacts │ │ │ └── orchestrator │ │ │ └── manifest-accounts-only.yaml │ ├── 200-provisioning-a-product │ │ ├── _index.md │ │ └── artefacts │ │ │ ├── factory │ │ │ ├── completed.yaml │ │ │ ├── create-the-portfolio--portfolio_only.yaml │ │ │ └── create-the-portfolio--portfolio_product_and_version.yaml │ │ │ └── orchestrator │ │ │ ├── manifest-accounts-only.yaml │ │ │ ├── manifest-all.yaml │ │ │ └── manifest-launches-only.yaml │ ├── 300-sharing-a-portfolio │ │ └── _index.md │ ├── 302-imported-portfolios │ │ └── _index.md │ ├── 303-spoke-local-portfolios │ │ └── _index.md │ ├── 305-using-tag-options │ │ └── _index.md │ ├── 310-using-resource-update-constraints │ │ └── _index.md │ ├── 350-adding-a-region │ │ └── _index.md │ ├── 360-aws-organizations-integration │ │ ├── 361-adding-accounts-in-ou.md │ │ ├── 362-sharing-a-portfolio-organizations.md │ │ └── _index.md │ ├── 380-provisioning-a-cloudformation-stack │ │ └── _index.md │ ├── 382-migrating-from-launches-to-stacks │ │ └── _index.md │ ├── 384-migrating-from-stacksets-to-stacks │ │ └── _index.md │ ├── 385-provisioning-a-stack │ │ └── _index.md │ ├── 386-using-stack-and-launch-outputs │ │ └── _index.md │ ├── 390-terminating-provisioned-resources │ │ └── _index.md │ ├── 400-invoking-a-lambda-function │ │ └── _index.md │ ├── 600-starting-a-code-build-project │ │ └── _index.md │ ├── 680-using-policy-simulations │ │ └── _index.md │ ├── 700-using-assertions │ │ └── _index.md │ ├── 750-managing-organizational-units │ │ └── _index.md │ ├── 800-applying-service-control-policies │ │ └── _index.md │ ├── 850-applying-tag-policies │ │ └── _index.md │ ├── _index.md │ ├── applying-cloud-custodian-policies │ │ └── _index.md │ ├── using-a-mono-repo │ │ └── _index.md │ └── using-ssm-to-override-account-details │ │ └── _index.md ├── installation │ ├── 100-securing-the-installation │ │ └── _index.md │ ├── 20-service-catalog-factory.md │ ├── 30-service-catalog-puppet │ │ ├── 10-using-aws-organizations.md │ │ ├── 30-installing-puppet.md │ │ └── _index.md │ ├── 50-bootstrapping │ │ ├── 10-using-cfn-and-codebuild.md │ │ ├── 50-using-the-cli.md │ │ ├── 80-restricting-spokes.md │ │ └── _index.md │ ├── _index.md │ └── installing-specific-versions │ │ └── _index.md ├── managing-your-environments │ ├── GitOps │ │ ├── _index.md │ │ ├── conditions.md │ │ ├── intrinsic-functions.md │ │ └── manifest-properties.md │ ├── _index.md │ ├── dealing-with-variance │ │ └── _index.md │ ├── dont-repeat-yourself │ │ ├── _index.md │ │ └── accounts-section.md │ ├── fault-tolerance │ │ └── _index.md │ ├── fine-grained-depends-on │ │ └── _index.md │ ├── multi-org-usage │ │ └── _index.md │ ├── product-sdlc │ │ └── _index.md │ └── workflow-tracing │ │ └── _index.md ├── tools │ ├── _index.md │ ├── factory │ │ └── _index.md │ └── puppet │ │ └── _index.md └── upgrading │ ├── _index.md │ ├── service-catalog-factory.md │ └── service-catalog-puppet.md ├── data └── common.toml ├── diagrams └── table-viewer ├── ee_blueprint ├── blah.json ├── ee_readme.md ├── enable_config.yaml ├── install_tools.yaml ├── reinvent-s3_bucket.yaml ├── servicecatalog-factory-initialiser.template.yaml └── servicecatalog-puppet-initialiser.template.yaml ├── layouts ├── partials │ ├── custom-footer.html │ ├── favicon.html │ ├── header.html │ ├── logo.html │ └── menu-footer.html └── shortcodes │ ├── cdkversion.html │ ├── cloudformation_link.html │ ├── codecommit_link.html │ ├── codepipeline_pipeline_link.html │ ├── config_rules_list_link.html │ ├── content.html │ ├── external_link.html │ ├── iam_groups_link.html │ ├── service_catalog_factory_code_commit_repo_link.html │ ├── service_catalog_factory_pipeline_link.html │ ├── service_catalog_portfolios_list_link.html │ ├── service_catalog_products_list_link.html │ ├── service_catalog_provisioned_products_link.html │ ├── service_catalog_puppet_code_commit_repo_link.html │ └── service_catalog_puppet_pipeline_link.html ├── static ├── 640px-Amazon_Web_Services_Logo.svg.png ├── AWS-Logo.svg ├── Amazon_Web_Services_Logo.svg ├── CNAME ├── acknowledge_create.png ├── confirm_create_stack.png ├── confirm_start_factory_codebuild.png ├── create_complete_factory.png ├── create_complete_puppet.png ├── create_in_progress_factory.png ├── create_in_progress_puppet.png ├── create_stack.png ├── create_stack_puppet.png ├── css │ ├── all.css │ ├── jquery-ui.min.css │ └── theme-mine.css ├── design-considerations │ └── multi-account-strategy │ │ └── starter-multi-account-framework.png ├── factory_cloudformation.png ├── factory_codebuild_complete.png ├── factory_codecommit.png ├── factory_codepipeline.png ├── factory_initialize_codebuild.png ├── factory_s3.png ├── how-tos │ ├── creating-and-provisioning-a-product │ │ ├── ClickAwsConfigS3BucketServerSideEncryptionEnabled.png │ │ ├── ClickAwsConfigS3BucketServerSideEncryptionEnabledV1.png │ │ ├── ClickCreate.png │ │ ├── ClickEdit.png │ │ ├── ClickOnPortfolios.png │ │ ├── ClickOnreinvent.png │ │ ├── CommitChanges.png │ │ ├── CommitChangesEmpty.png │ │ ├── CreateRepository.png │ │ ├── EnableOrganizationalSharing.png │ │ ├── FilterByAccount.png │ │ ├── InputTheName.png │ │ ├── PortfolioReinventCloudEngineeringGovernance.png │ │ ├── SeeYourPortfolio.png │ │ ├── SeeYourTask1Product.png │ │ ├── SeeYourTask1ProductVersion1.png │ │ ├── SuccessfulFactoryProductRun.png │ │ ├── SuccessfulFactoryRun.png │ │ ├── SuccessfulPuppetRun.png │ │ ├── SuccessfulPuppetRunV2.png │ │ └── create_file.png │ ├── deleting-a-product │ │ └── product-is-inactive.png │ ├── installation │ │ ├── acknowledge_create.png │ │ ├── create_complete_factory.png │ │ ├── create_complete_puppet.png │ │ ├── create_in_progress_factory.png │ │ ├── create_in_progress_puppet.png │ │ ├── create_stack.png │ │ ├── create_stack_puppet.png │ │ ├── factory_cloudformation.png │ │ ├── factory_codebuild_complete.png │ │ ├── factory_codecommit.png │ │ ├── factory_codepipeline.png │ │ ├── puppet_cloudformation.png │ │ ├── puppet_codebuild_complete.png │ │ ├── puppet_codecommit.png │ │ ├── puppet_codepipeline.png │ │ ├── puppet_s3.png │ │ ├── select_cloudformation.png │ │ ├── specify_stack_details_puppet.png │ │ ├── specify_template.png │ │ ├── specify_template_puppet.png │ │ ├── stack_details_factory.png │ │ ├── start_factory_codebuild.png │ │ └── start_puppet_codebuild.png │ ├── invoking-a-lambda-function │ │ ├── commit_changes.png │ │ └── iam_groups.png │ └── sharing-portfolios │ │ ├── IP-tasks.svg │ │ └── SLP-tasks.png ├── images │ ├── factory │ │ ├── factory-conceptual.png │ │ └── factory-pipelines.png │ └── puppet │ │ ├── assertions.png │ │ ├── code-build-runs.png │ │ ├── lambda-invocations.png │ │ ├── launches.png │ │ ├── puppet-conceptual-spoke.png │ │ ├── puppet-conceptual.png │ │ ├── spoke-local-portfolios.png │ │ └── stacks.png ├── jm.png ├── jquery.min.js ├── puppet_cloudformation.png ├── puppet_codebuild_complete.png ├── puppet_codecommit.png ├── puppet_codepipeline.png ├── puppet_s3.png ├── sc_factory.png ├── sc_factory.pngold ├── sc_puppet.png ├── sc_puppet.png.old ├── select_cloudformation.png ├── select_next.png ├── specify_stack_details_puppet.png ├── specify_template.png ├── specify_template.pngold ├── specify_template_puppet.png ├── stack_details.png ├── stack_details_factory.png ├── start_factory_codebuild.png ├── start_puppet_codebuild.png ├── tasks │ ├── ClickAwsConfigS3BucketServerSideEncryptionEnabled.png │ ├── ClickAwsConfigS3BucketServerSideEncryptionEnabledV1.png │ ├── ClickCreate.png │ ├── ClickEdit.png │ ├── ClickEditPuppetRepo.png │ ├── ClickOnPortfolios.png │ ├── ClickOnreinvent.png │ ├── CommitChanges.png │ ├── CreateRepository.png │ ├── FailedCFNNag.png │ ├── FilterByAccount.png │ ├── FindMyAccountNumber.png │ ├── InputTheName.png │ ├── PassedCFNNag.png │ ├── PortfolioReinventCloudEngineeringGovernance.png │ ├── SeeYourPortfolio.png │ ├── SeeYourTask1Product.png │ ├── SeeYourTask1ProductVersion1.png │ ├── SuccessfulFactoryProductRun.png │ ├── SuccessfulFactoryRun.png │ ├── SuccessfulPuppetRun.png │ ├── aws-config-rule-enabled.png │ └── create_file.png ├── template_version.png └── verify_codecommit_factory.png └── themes └── learn ├── .gitignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── archetypes ├── chapter.md └── default.md ├── exampleSite ├── LICENSE.md ├── config.toml ├── content │ ├── _index.en.md │ ├── _index.fr.md │ ├── basics │ │ ├── _index.en.md │ │ ├── _index.fr.md │ │ ├── configuration │ │ │ ├── _index.en.md │ │ │ └── _index.fr.md │ │ ├── installation │ │ │ ├── _index.en.md │ │ │ ├── _index.fr.md │ │ │ └── images │ │ │ │ └── chapter.png │ │ ├── requirements │ │ │ ├── _index.en.md │ │ │ ├── _index.fr.md │ │ │ └── images │ │ │ │ └── magic.gif │ │ └── style-customization │ │ │ ├── _index.en.md │ │ │ ├── _index.fr.md │ │ │ └── images │ │ │ ├── blue-variant.png │ │ │ ├── green-variant.png │ │ │ └── red-variant.png │ ├── cont │ │ ├── _index.en.md │ │ ├── _index.fr.md │ │ ├── archetypes.en.md │ │ ├── archetypes.fr.md │ │ ├── i18n │ │ │ ├── _index.en.md │ │ │ ├── _index.fr.md │ │ │ └── images │ │ │ │ └── i18n-menu.gif │ │ ├── icons.en.md │ │ ├── markdown.en.md │ │ ├── markdown.fr.md │ │ ├── menushortcuts.en.md │ │ ├── menushortcuts.fr.md │ │ ├── pages │ │ │ ├── _index.en.md │ │ │ ├── _index.fr.md │ │ │ └── images │ │ │ │ ├── frontmatter-icon.png │ │ │ │ ├── pages-chapter.png │ │ │ │ └── pages-default.png │ │ ├── tags.en.md │ │ └── tags.fr.md │ ├── credits.en.md │ ├── credits.fr.md │ ├── shortcodes │ │ ├── _index.en.md │ │ ├── _index.fr.md │ │ ├── attachments.en.files │ │ │ ├── BachGavotteShort.mp3 │ │ │ ├── Carroll_AliceAuPaysDesMerveilles.pdf │ │ │ ├── adivorciarsetoca00cape.pdf │ │ │ ├── hugo.png │ │ │ └── movieselectricsheep-flock-244-32500-2.mp4 │ │ ├── attachments.en.md │ │ ├── attachments.fr.files │ │ │ ├── BachGavotteShort.mp3 │ │ │ ├── Carroll_AliceAuPaysDesMerveilles.pdf │ │ │ ├── adivorciarsetoca00cape.pdf │ │ │ ├── hugo.png │ │ │ └── movieselectricsheep-flock-244-32500-2.mp4 │ │ ├── attachments.fr.md │ │ ├── button.en.md │ │ ├── button.fr.md │ │ ├── children │ │ │ ├── _index.en.md │ │ │ ├── _index.fr.md │ │ │ ├── children-1 │ │ │ │ ├── _index.en.md │ │ │ │ ├── _index.fr.md │ │ │ │ └── children-1-1 │ │ │ │ │ ├── _index.en.md │ │ │ │ │ ├── _index.fr.md │ │ │ │ │ └── children-1-1-1 │ │ │ │ │ ├── _index.en.md │ │ │ │ │ ├── _index.fr.md │ │ │ │ │ └── children-1-1-1-1 │ │ │ │ │ ├── _index.en.md │ │ │ │ │ ├── _index.fr.md │ │ │ │ │ └── children-1-1-1-1-1 │ │ │ │ │ ├── _index.en.md │ │ │ │ │ └── _index.fr.md │ │ │ ├── children-2 │ │ │ │ ├── _index.en.md │ │ │ │ ├── _index.fr.md │ │ │ │ ├── test3.en.md │ │ │ │ └── test3.fr.md │ │ │ ├── children-3 │ │ │ │ ├── _index.en.md │ │ │ │ └── _index.fr.md │ │ │ ├── children-4 │ │ │ │ ├── _index.en.md │ │ │ │ └── _index.fr.md │ │ │ ├── test.en.md │ │ │ └── test.fr.md │ │ ├── expand.en.md │ │ ├── expand.fr.md │ │ ├── mermaid.en.md │ │ ├── mermaid.fr.md │ │ ├── notice.en.md │ │ ├── notice.fr.md │ │ ├── siteparam.en.md │ │ └── siteparam.fr.md │ ├── showcase.en.md │ └── showcase.fr.md ├── layouts │ ├── partials │ │ ├── custom-footer.html │ │ ├── logo.html │ │ └── menu-footer.html │ └── shortcodes │ │ └── ghcontributors.html └── static │ ├── css │ └── theme-mine.css │ ├── fonts │ ├── monogramos-webfont.eot │ ├── monogramos-webfont.svg │ ├── monogramos-webfont.ttf │ ├── monogramos-webfont.woff │ └── monogramos-webfont.woff2 │ └── images │ └── showcase │ └── tat.png ├── i18n ├── en.toml ├── es.toml ├── fr.toml ├── id.toml ├── nl.toml ├── pt.toml └── tr.toml ├── images ├── screenshot.png └── tn.png ├── layouts ├── 404.html ├── _default │ ├── list.html │ └── single.html ├── index.html ├── index.json ├── partials │ ├── custom-comments.html │ ├── custom-footer.html │ ├── custom-header.html │ ├── favicon.html │ ├── footer.html │ ├── header.html │ ├── logo.html │ ├── menu.html │ ├── meta.html │ ├── search.html │ ├── tags.html │ └── toc.html └── shortcodes │ ├── attachments.html │ ├── button.html │ ├── children.html │ ├── code-toggle.html │ ├── expand.html │ ├── mermaid.html │ ├── my-code-toggle.html │ ├── notice.html │ ├── ref.html │ ├── relref.html │ └── siteparam.html ├── netlify.toml ├── static ├── css │ ├── atom-one-dark-reasonable.css │ ├── auto-complete.css │ ├── featherlight.min.css │ ├── font-awesome.min.css │ ├── fontawesome-all.min.css │ ├── hugo-theme.css │ ├── hybrid.css │ ├── nucleus.css │ ├── perfect-scrollbar.min.css │ ├── tags.css │ ├── theme-blue.css │ ├── theme-green.css │ ├── theme-red.css │ └── theme.css ├── fonts │ ├── FontAwesome.otf │ ├── Inconsolata.eot │ ├── Inconsolata.svg │ ├── Inconsolata.ttf │ ├── Inconsolata.woff │ ├── Novecentosanswide-Normal-webfont.eot │ ├── Novecentosanswide-Normal-webfont.svg │ ├── Novecentosanswide-Normal-webfont.ttf │ ├── Novecentosanswide-Normal-webfont.woff │ ├── Novecentosanswide-Normal-webfont.woff2 │ ├── Novecentosanswide-UltraLight-webfont.eot │ ├── Novecentosanswide-UltraLight-webfont.svg │ ├── Novecentosanswide-UltraLight-webfont.ttf │ ├── Novecentosanswide-UltraLight-webfont.woff │ ├── Novecentosanswide-UltraLight-webfont.woff2 │ ├── Work_Sans_200.eot │ ├── Work_Sans_200.svg │ ├── Work_Sans_200.ttf │ ├── Work_Sans_200.woff │ ├── Work_Sans_200.woff2 │ ├── Work_Sans_300.eot │ ├── Work_Sans_300.svg │ ├── Work_Sans_300.ttf │ ├── Work_Sans_300.woff │ ├── Work_Sans_300.woff2 │ ├── Work_Sans_500.eot │ ├── Work_Sans_500.svg │ ├── Work_Sans_500.ttf │ ├── Work_Sans_500.woff │ ├── Work_Sans_500.woff2 │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── images │ ├── clippy.svg │ ├── favicon.png │ └── gopher-404.jpg ├── js │ ├── .gitignore │ ├── auto-complete.js │ ├── clipboard.min.js │ ├── featherlight.min.js │ ├── highlight.pack.js │ ├── html5shiv-printshiv.min.js │ ├── hugo-learn.js │ ├── jquery.sticky.js │ ├── learn.js │ ├── lunr.min.js │ ├── modernizr.custom-3.6.0.js │ ├── modernizr.custom.71422.js │ ├── perfect-scrollbar.jquery.min.js │ ├── perfect-scrollbar.min.js │ └── search.js ├── mermaid │ ├── mermaid.css │ ├── mermaid.dark.css │ └── mermaid.forest.css └── webfonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── theme.toml └── wercker.yml /.gitallowed: -------------------------------------------------------------------------------- 1 | 012345678910 2 | 109876543210 3 | 029953558454 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Steps to reproduce 2 | _please include urls where possible_ 3 | - Go to ... 4 | - Click on ... 5 | 6 | 7 | ### Expected results 8 | I observed 9 | 10 | ### Actual results 11 | I expected to observe 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | *Issue #, if available:* 2 | 3 | *Description of changes:* 4 | 5 | 6 | By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. 7 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | 4 | name: Python application 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | 10 | jobs: 11 | build: 12 | 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Set up Python 3.7 18 | uses: actions/setup-python@v2 19 | with: 20 | python-version: 3.7 21 | - name: Install dependencies 22 | run: | 23 | wget https://github.com/gohugoio/hugo/releases/download/v0.61.0/hugo_extended_0.61.0_Linux-64bit.deb 24 | sudo dpkg -i hugo_extended_0.61.0_Linux-64bit.deb 25 | - name: set git details 26 | run: | 27 | git config --global user.email "eamonnf+autocommit@amazon.com" 28 | git config --global user.name "autobot" 29 | - name: Publish 30 | run: | 31 | make gh-pages-on-travisci 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.js 2 | *.d.ts 3 | node_modules 4 | workshop/public/** 5 | workshop/content/public/** 6 | .DS_Store 7 | obj/ 8 | cdk.out/ 9 | bin/ 10 | *~ 11 | .idea/ 12 | ignored 13 | public 14 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: xenial 2 | addons: 3 | apt: 4 | sources: 5 | - git-core 6 | packages: 7 | - git 8 | 9 | before_install: 10 | - wget https://github.com/gohugoio/hugo/releases/download/v0.61.0/hugo_extended_0.61.0_Linux-64bit.deb 11 | - sudo dpkg -i hugo_extended_0.61.0_Linux-64bit.deb 12 | 13 | language: python 14 | python: 15 | - '3.7' 16 | 17 | branches: 18 | only: 19 | - master 20 | 21 | script: make gh-pages-on-travisci 22 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | RUN apt-get update 4 | RUN apt-get install -y wget 5 | 6 | RUN wget https://github.com/gohugoio/hugo/releases/download/v0.61.0/hugo_extended_0.61.0_Linux-64bit.deb 7 | RUN dpkg -i hugo_extended_0.61.0_Linux-64bit.deb 8 | 9 | RUN mkdir /content 10 | 11 | WORKDIR /content 12 | 13 | EXPOSE 1313 14 | 15 | ENTRYPOINT ["/usr/local/bin/hugo"] -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: clean build all development gh-pages-on-travisci gh-pages docker-build docker 2 | 3 | version := "$(shell git rev-parse --short HEAD)" 4 | GH_REF := "$(shell git remote get-url origin | awk "{sub(/https:\/\//,\"https://${GH_TOKEN}@\")}; 1" | awk "{sub(/\.git/, \"\")} 1")" 5 | 6 | development: docker 7 | 8 | clean: 9 | rm -rf workshop/public 10 | mkdir workshop/public 11 | git worktree prune 12 | rm -rf .git/worktrees/public/ 13 | 14 | 15 | gh-pages: clean 16 | echo "Checking out gh-pages branch into public" 17 | git worktree add -B gh-pages workshop/public origin/gh-pages 18 | echo "Removing existing files" 19 | rm -rf workshop/public/* 20 | echo "Generating site" 21 | cd workshop && version=$(version) hugo --environment ghpages 22 | echo "Updating gh-pages branch" 23 | cd workshop/public && git add --all && git commit -m "Publishing to gh-pages (publish.sh)" && git push 24 | echo "https://aws-samples.github.io/aws-service-catalog-tools-workshop/" 25 | 26 | 27 | gh-pages-on-travisci: clean 28 | git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/* 29 | git fetch --unshallow origin gh-pages 30 | git worktree add -B gh-pages workshop/public origin/gh-pages 31 | rm -rf workshop/public/* 32 | echo "Generating site" 33 | cd workshop && version=$(version) hugo --environment ghpages 34 | echo "Updating gh-pages branch" 35 | cd workshop/public && git add --all && git commit -m "Publishing to gh-pages (publish.sh)" && git push --quiet $(GH_REF) gh-pages > /dev/null 2>&1 36 | 37 | docker-build: 38 | docker build . -t hugo 39 | 40 | docker: 41 | docker run --rm -v $$PWD/workshop:/content -p 1313:1313 hugo server --bind 0.0.0.0 --disableFastRender 42 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | AWS Service Catalog Tools Workshop 2 | Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## AWS Service Catalog Tools Workshop 2 | 3 | Independent, self paced lab for learning how to install, configure and use the Service Catalog Tools. 4 | 5 | ## License 6 | 7 | This library is licensed under the Apache 2.0 License. 8 | 9 | 10 | ## How to build 11 | 12 | To build a local version for development using docker you will need to build the image and then run a container: 13 | ```shell 14 | make docker-build docker 15 | ``` 16 | 17 | To build the gh-pages: 18 | ```shell 19 | make gh-pages 20 | ``` 21 | -------------------------------------------------------------------------------- /workshop/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | --- 5 | -------------------------------------------------------------------------------- /workshop/config/_default/config.toml: -------------------------------------------------------------------------------- 1 | baseURL= "https://aws-samples.github.io/aws-service-catalog-tools-workshop/" 2 | staticDir= ["aws-service-catalog-tools-workshop"] 3 | languageCode = "en-us" 4 | defaultContentLanguage = "en" 5 | title = "Service Catalog Tools Workshop" 6 | theme = "learn" 7 | uglyurls = true 8 | sectionPagesMenu = "main" 9 | pygmentsCodeFences = true 10 | pygmentsStyle = "monokai" 11 | 12 | [params] 13 | themeVariant = "mine" 14 | showVisitedLinks = false 15 | author = "Service Catalog Tools Team" 16 | description = "AWS Service Catalog Tools Workshop" 17 | disableSearch = true 18 | disableAssetsBusting = true 19 | disableLanguageSwitchingButton = true 20 | disableShortcutsTitle = true 21 | 22 | [outputs] 23 | home = [ "HTML", "AMP", "RSS", "JSON"] 24 | page = [ "HTML", "AMP"] 25 | 26 | 27 | [markup] 28 | [markup.goldmark] 29 | [markup.goldmark.renderer] 30 | unsafe = true 31 | -------------------------------------------------------------------------------- /workshop/config/development/config.toml: -------------------------------------------------------------------------------- 1 | baseURL= "https://localhost:1313" 2 | staticDir = ["static"] 3 | languageCode = "en-us" 4 | defaultContentLanguage = "en" 5 | title = "Service Catalog Tools Workshop" 6 | theme = "learn" 7 | uglyurls = true 8 | sectionPagesMenu = "main" 9 | pygmentsCodeFences = true 10 | pygmentsStyle = "monokai" 11 | 12 | [params] 13 | themeVariant = "mine" 14 | showVisitedLinks = false 15 | author = "Service Catalog Tools Team" 16 | description = "AWS Service Catalog Tools Workshop" 17 | disableSearch = true 18 | disableAssetsBusting = true 19 | disableLanguageSwitchingButton = true 20 | disableShortcutsTitle = true 21 | 22 | [outputs] 23 | home = [ "HTML", "AMP", "RSS", "JSON"] 24 | page = [ "HTML", "AMP"] 25 | 26 | [markup] 27 | [markup.goldmark] 28 | [markup.goldmark.renderer] 29 | unsafe = true -------------------------------------------------------------------------------- /workshop/config/ghpages/config.toml: -------------------------------------------------------------------------------- 1 | baseURL= "https://aws-samples.github.io/aws-service-catalog-tools-workshop/" 2 | staticDir= ["static", "css"] 3 | languageCode = "en-us" 4 | defaultContentLanguage = "en" 5 | title = "Service Catalog Tools Workshop" 6 | theme = "learn" 7 | uglyurls = true 8 | sectionPagesMenu = "main" 9 | pygmentsCodeFences = true 10 | pygmentsStyle = "monokai" 11 | relativeURLs = true 12 | canonifyURLs = true 13 | 14 | [params] 15 | themeVariant = "mine" 16 | showVisitedLinks = false 17 | author = "Service Catalog Tools Team" 18 | description = "AWS Service Catalog Tools Workshop" 19 | disableSearch = true 20 | disableAssetsBusting = true 21 | disableLanguageSwitchingButton = true 22 | disableShortcutsTitle = true 23 | 24 | [outputs] 25 | home = [ "HTML", "AMP", "RSS", "JSON"] 26 | page = [ "HTML", "AMP"] 27 | 28 | 29 | [markup] 30 | [markup.goldmark] 31 | [markup.goldmark.renderer] 32 | unsafe = true -------------------------------------------------------------------------------- /workshop/content/2021-workshop/10-prerequisites/100-installation/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Installation" 3 | weight = 100 4 | +++ 5 | --- 6 | 7 | ## What are we going to do? 8 | 9 | We need to install the Service Catalog tools to get started. The Service Catalog tools comprises of two open source 10 | solutions: 11 | 12 | - aws-service-catalog-factory - this helps us build pipelines for a single account 13 | - aws-service-catalog-puppet - this helps us to share, provision and configure resources across a multi account 14 | 15 | For the workshop we recommend you install the tools in the same region as each other and we recommend you use eu-west-1. 16 | 17 | ## How are we going to do it? 18 | 19 | {{% children depth="1" showhidden="false" %}} 20 | -------------------------------------------------------------------------------- /workshop/content/2021-workshop/10-prerequisites/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Pre-requisites" 3 | weight = 10 4 | +++ 5 | 6 | This workshop assumes you have no experience using the Service Catalog tools. The expected completion time is between 7 | 2 - 3 hours. You can complete this in multiple sittings and if you have previous experience using the Service Catalog 8 | tools you can expect to complete it sooner. 9 | 10 | In order to complete this workshop you will need: 11 | - a web browser to access the AWS console 12 | - AWS account to use 13 | - the Service Catalog tools installed into the account 14 | 15 | {{% notice note%}} 16 | If you are using your own AWS account you will need to be able to use the AWS Console to provision resources. 17 | {{% /notice %}} 18 | 19 | {{% children depth="1" showhidden="false" %}} 20 | -------------------------------------------------------------------------------- /workshop/content/2021-workshop/100-removing-the-default-networking/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Removing the default networking" 3 | weight = 100 4 | +++ 5 | --- 6 | 7 | ## What are we going to do? 8 | 9 | When you create a new AWS account there are some networking resources already provisioned in the account. If you are 10 | planning on using an AWS Transit Gateway or connecting the AWS account to your local network then these resources may 11 | not be required. 12 | 13 | We are going to create an AWS Lambda function that assumes role into an AWS account to remove the networking resources. 14 | We will use a Service Catalog tools stack for this. To do this we will create a pipeline that will create the stack and 15 | then we will provision the stack. Once the stack is provisioned we will invoke the lambda function so that the 16 | resources are removed. Finally, we will verify the resources are no longer present using an assertion. 17 | 18 | 19 | ## How are we going to do it? 20 | 21 | This task is broken down into the following steps: 22 | 23 | {{% children depth="1" showhidden="false" %}} 24 | -------------------------------------------------------------------------------- /workshop/content/2021-workshop/200-provisioning-a-vpc/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Provisioning a VPC" 3 | weight = 200 4 | +++ 5 | --- 6 | 7 | ## What are we going to do? 8 | 9 | By now, you should have created a stack containing a lambda, provisioned it, invoked the lambda and then asserted 10 | the effect of the lambda invocation. 11 | 12 | Now the default networking resources are removed, you are ready to provision a new VPC. The following section will 13 | show you what it is like to create a VPC and storing a stack output in AWS Systems Manager Parameter Store for later 14 | use. 15 | 16 | Here are the steps you will need to follow: 17 | 18 | {{% children depth="1" showhidden="false" %}} 19 | -------------------------------------------------------------------------------- /workshop/content/2021-workshop/300-provisioning-subnets/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Provisioning Subnets" 3 | weight = 300 4 | +++ 5 | --- 6 | 7 | ## What are we going to do? 8 | 9 | By now, you will have removed the default networking resources and provisioned a new VPC. You are now ready to start 10 | creating some subnets. 11 | 12 | We are going to create a subnet by provisioning an AWS Service Catalog product using a launch and then we are going to 13 | provision another subnet using Hashicorp Terraform using a workspace. 14 | 15 | Here are the steps to do this: 16 | 17 | {{% children depth="1" showhidden="false" %}} 18 | -------------------------------------------------------------------------------- /workshop/content/2021-workshop/400-self-service/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Self service" 3 | weight = 400 4 | +++ 5 | --- 6 | 7 | ## What are we going to do? 8 | 9 | We have now removed the default networking resources, created a VPC and two subnets. 10 | 11 | As we build out a multi account environment we may want to allow our end user to decide how many subnets they need, 12 | what sizes they are or which VPC they should be attached to. AWS Service Catalog is a great way to achieve this. You 13 | can create a product, add it to a portfolio and then allow your users to provision the product with limited options. 14 | 15 | The following steps will show you how to make a product and share it with an account: 16 | 17 | {{% children depth="1" showhidden="false" %}} 18 | -------------------------------------------------------------------------------- /workshop/content/2021-workshop/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "2021 Workshop" 3 | chapter = false 4 | weight = 700 5 | +++ 6 | 7 | Welcome to the Service Catalog tools network capability workshop - 2021 edition. 8 | 9 | The average completion time for the workshop is between 2 - 3 hours. 10 | 11 | 12 | ## What are we going to be doing? 13 | 14 | In this workshop you will be building out the networking capability for your multi-account environment. 15 | 16 | You will learn about some of the essential building blocks the Service Catalog tools provide you when creating your 17 | multi account workflow: 18 | - provisioning resources into accounts using AWS CloudFormation, AWS Service Catalog and Hashicorp Terraform 19 | - executing AWS Lambda functions 20 | - Sharing Service Catalog portfolios 21 | 22 | You will be using these building blocks to: 23 | 24 | - Remove the default networking resources from your AWS accounts 25 | - Provision a new AWS VPC using AWS CloudFormation 26 | - Provision a new subnet using AWS Service Catalog 27 | - Provision a new subnet using Hashicorp Terraform 28 | - Share a Service Catalog portfolio so end users can create their own subnets 29 | 30 | ## Let's get going! 31 | 32 | When you are ready, click the right arrow to begin! 33 | 34 | {{% notice tip%}} 35 | You can use the left and right arrows to navigate through the Workshop 36 | {{% /notice %}} 37 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Budget & Cost governance" 3 | weight = 100 4 | aliases = [ 5 | "/40-reinvent2019/100-task-1.html", 6 | ] 7 | +++ 8 | --- 9 | 10 | ## The ask 11 | 12 | Cloud usage within Example Corp has picked up significantly and a number of teams are now using EC2 instances in innovative ways. The customer has noticed that teams are often not sure which EC2 instance types to use for their applications and this is leading to underutilized EC2 instances that are run on-demand. To bring down costs, the customer has purchased a set of EC2 reserved instances, based on common workload profiles, and we need to ensure the teams are using them for long running applications. 13 | 14 | To help the customer, we will design and then deploy a control that gives them visibility into which EC2 instance types are being used within an AWS account. 15 | 16 | ## The plan 17 | 18 | We are going to create and deploy a governance control using an AWS Config managed rule to ensure the right instance types are being used. 19 | 20 | You can follow these steps to do this: 21 | 22 | {{% children depth="1" showhidden="false" %}} 23 | 24 | Future work will involve mandating that teams use only approved instance types. To start, we will gather data via AWS Config. 25 | 26 | {{% notice note %}} 27 | If you need help at any time please raise your hand. 28 | {{% /notice %}} 29 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/factory/completed.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-desired-instance-types" 4 | Owner: "budget-and-cost-governance@example.com" 5 | Description: "Enables AWS Config rule - desired-instance-type with our RIs" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to budget-and-cost-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/budget-and-cost-governance/aws-config-desired-instance-types" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "governance" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-desired-instance-types" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-desired-instance-types" 25 | BranchName: "main" 26 | Portfolios: 27 | - "cloud-engineering-governance" 28 | Portfolios: 29 | - DisplayName: "cloud-engineering-governance" 30 | Description: "Portfolio containing the products needed to govern AWS accounts" 31 | ProviderName: "cloud-engineering" 32 | Associations: 33 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 34 | Tags: 35 | - Key: "type" 36 | Value: "governance" 37 | - Key: "creator" 38 | Value: "cloud-engineering" 39 | - Key: "cost-center" 40 | Value: "governance" 41 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/factory/create-the-version--version-only.yaml: -------------------------------------------------------------------------------- 1 | Versions: 2 | - Name: "v1" 3 | Description: "v1 of aws-config-desired-instance-types" 4 | Active: True 5 | Source: 6 | Provider: "CodeCommit" 7 | Configuration: 8 | RepositoryName: "aws-config-desired-instance-types" 9 | BranchName: "main" 10 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/orchestrator/manifest-accounts-only-sample.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "012345678910" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | tags: 8 | - "type:prod" 9 | - "partition:eu" 10 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/orchestrator/manifest-accounts-only.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | tags: 8 | - "type:prod" 9 | - "partition:eu" 10 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/orchestrator/manifest-all.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | tags: 8 | - "type:prod" 9 | - "partition:eu" 10 | launches: 11 | aws-config-desired-instance-types: 12 | portfolio: "reinvent-cloud-engineering-governance" 13 | product: "aws-config-desired-instance-types" 14 | version: "v1" 15 | parameters: 16 | InstanceType: 17 | default: "t2.medium, t2.large, t2.xlarge" 18 | deploy_to: 19 | tags: 20 | - tag: "type:prod" 21 | regions: "default_region" 22 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/orchestrator/manifest-launches-only.yaml: -------------------------------------------------------------------------------- 1 | launches: 2 | aws-config-desired-instance-types: 3 | portfolio: "reinvent-cloud-engineering-governance" 4 | product: "aws-config-desired-instance-types" 5 | version: "v1" 6 | parameters: 7 | InstanceType: 8 | default: "t2.medium, t2.large, t2.xlarge" 9 | deploy_to: 10 | tags: 11 | - tag: "type:prod" 12 | regions: "default_region" 13 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/100-task-1/artefacts/product.template.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: "2010-09-09" 2 | Description: "Create an AWS Config rule ensuring the given instance types are the only instance types used" 3 | 4 | Parameters: 5 | InstanceType: 6 | Type: String 7 | Description: "Comma separated list of EC2 instance types (for example, 't2.small, m4.large')." 8 | Default: "t2.micro, t2.small" 9 | 10 | Resources: 11 | AWSConfigRule: 12 | Type: AWS::Config::ConfigRule 13 | Properties: 14 | ConfigRuleName: "desired-instance-type" 15 | Description: "Checks whether your EC2 instances are of the specified instance types." 16 | InputParameters: 17 | instanceType: !Ref InstanceType 18 | Scope: 19 | ComplianceResourceTypes: 20 | - "AWS::EC2::Instance" 21 | Source: 22 | Owner: AWS 23 | SourceIdentifier: DESIRED_INSTANCE_TYPE 24 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/factory/create-the-version--version-only.yaml: -------------------------------------------------------------------------------- 1 | Versions: 2 | - Name: "v1" 3 | Description: "v1 of aws-config-rds-storage-encrypted" 4 | Active: True 5 | Source: 6 | Provider: "CodeCommit" 7 | Configuration: 8 | RepositoryName: "aws-config-rds-storage-encrypted" 9 | BranchName: "main" -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/factory/create-the-version--version-only_second_time.yaml: -------------------------------------------------------------------------------- 1 | Versions: 2 | - Name: "v1" 3 | Description: "v1 of rds-instance" 4 | Active: True 5 | Source: 6 | Provider: "CodeCommit" 7 | Configuration: 8 | RepositoryName: "rds-instance" 9 | BranchName: "main" -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/factory/new_portfolio_details_second_time.yaml: -------------------------------------------------------------------------------- 1 | - DisplayName: "cloud-engineering-self-service" 2 | Description: "Portfolio containing products that you can use to ensure you meet the governance guidelines" 3 | ProviderName: "cloud-engineering" 4 | Associations: 5 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 6 | Tags: 7 | - Key: "type" 8 | Value: "governance" 9 | - Key: "creator" 10 | Value: "cloud-engineering" 11 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/factory/new_product_details.yaml: -------------------------------------------------------------------------------- 1 | - Name: "aws-config-rds-storage-encrypted" 2 | Owner: "data-governance@example.com" 3 | Description: "Enables AWS Config rule - aws-config-rds-storage-encrypted" 4 | Distributor: "cloud-engineering" 5 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 6 | SupportEmail: "cloud-engineering@example.com" 7 | SupportUrl: "https://wiki.example.com/cloud-engineering/data-governance/aws-config-rds-storage-encrypted" 8 | Tags: 9 | - Key: "type" 10 | Value: "governance" 11 | - Key: "creator" 12 | Value: "cloud-engineering" 13 | - Key: "cost-center" 14 | Value: "governance" 15 | Versions: 16 | - Name: "v1" 17 | Description: "v1 of aws-config-rds-storage-encrypted" 18 | Active: True 19 | Source: 20 | Provider: "CodeCommit" 21 | Configuration: 22 | RepositoryName: "aws-config-rds-storage-encrypted" 23 | BranchName: "main" 24 | Portfolios: 25 | - "cloud-engineering-governance" -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/factory/new_product_details_second_time.yaml: -------------------------------------------------------------------------------- 1 | - Name: "rds-instance" 2 | Owner: "data-governance@example.com" 3 | Description: "A compliant RDS Instance you can use that meets data governance standards" 4 | Distributor: "cloud-engineering" 5 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 6 | SupportEmail: "cloud-engineering@example.com" 7 | SupportUrl: "https://wiki.example.com/cloud-engineering/data-governance/rds-instance" 8 | Options: 9 | ShouldCFNNag: True 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | Versions: 16 | - Name: "v1" 17 | Description: "v1 of rds-instance" 18 | Active: True 19 | Source: 20 | Provider: "CodeCommit" 21 | Configuration: 22 | RepositoryName: "rds-instance" 23 | BranchName: "main" 24 | Portfolios: 25 | - "cloud-engineering-self-service" -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/orchestrator/manifest-all-second_time.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | tags: 8 | - "type:prod" 9 | - "partition:eu" 10 | 11 | launches: 12 | aws-config-desired-instance-types: 13 | portfolio: "reinvent-cloud-engineering-governance" 14 | product: "aws-config-desired-instance-types" 15 | version: "v1" 16 | parameters: 17 | InstanceType: 18 | default: "t2.medium, t2.large, t2.xlarge" 19 | deploy_to: 20 | tags: 21 | - tag: "type:prod" 22 | regions: "default_region" 23 | aws-config-rds-storage-encrypted: 24 | portfolio: "reinvent-cloud-engineering-governance" 25 | product: "aws-config-rds-storage-encrypted" 26 | version: "v1" 27 | deploy_to: 28 | tags: 29 | - tag: "type:prod" 30 | regions: "default_region" 31 | 32 | spoke-local-portfolios: 33 | cloud-engineering-self-service: 34 | portfolio: "reinvent-cloud-engineering-self-service" 35 | deploy_to: 36 | tags: 37 | - tag: "type:prod" 38 | regions: "default_region" 39 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/orchestrator/manifest-all.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | tags: 8 | - "type:prod" 9 | - "partition:eu" 10 | 11 | launches: 12 | aws-config-desired-instance-types: 13 | portfolio: "reinvent-cloud-engineering-governance" 14 | product: "aws-config-desired-instance-types" 15 | version: "v1" 16 | parameters: 17 | InstanceType: 18 | default: "t2.medium, t2.large, t2.xlarge" 19 | deploy_to: 20 | tags: 21 | - tag: "type:prod" 22 | regions: "default_region" 23 | aws-config-rds-storage-encrypted: 24 | portfolio: "reinvent-cloud-engineering-governance" 25 | product: "aws-config-rds-storage-encrypted" 26 | version: "v1" 27 | deploy_to: 28 | tags: 29 | - tag: "type:prod" 30 | regions: "default_region" 31 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/orchestrator/manifest-launches-only.yaml: -------------------------------------------------------------------------------- 1 | aws-config-rds-storage-encrypted: 2 | portfolio: "reinvent-cloud-engineering-governance" 3 | product: "aws-config-rds-storage-encrypted" 4 | version: "v1" 5 | deploy_to: 6 | tags: 7 | - tag: "type:prod" 8 | regions: "default_region" 9 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/orchestrator/manifest-shares-addition.yaml: -------------------------------------------------------------------------------- 1 | spoke-local-portfolios: 2 | cloud-engineering-self-service: 3 | portfolio: "reinvent-cloud-engineering-self-service" 4 | deploy_to: 5 | tags: 6 | - tag: "type:prod" 7 | regions: "default_region" 8 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/150-task-2/artefacts/product.template.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: "Create an AWS Config rule ensuring RDS instances use encrypted storage" 3 | 4 | Resources: 5 | AWSConfigRule: 6 | Type: AWS::Config::ConfigRule 7 | Properties: 8 | ConfigRuleName: "rds-storage-encrypted" 9 | Description: "Checks whether storage encryption is enabled for your RDS DB instances." 10 | Scope: 11 | ComplianceResourceTypes: 12 | - "AWS::RDS::DBInstance" 13 | Source: 14 | Owner: AWS 15 | SourceIdentifier: RDS_STORAGE_ENCRYPTED -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/30-prerequisites/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Pre-requisites" 3 | weight = 30 4 | aliases = [ 5 | "/40-reinvent2019/30-prerequisites.html", 6 | ] 7 | +++ 8 | 9 | In order to complete this workshop you will need: 10 | 11 | - A single AWS Account which you can log into 12 | - A web browser to access the AWS console 13 | 14 | {{% notice note%}} 15 | 16 | If you are taking this workshop at re:Invent 2019 you should have been given a note when you entered the workshop. This 17 | note contains all you need to log into a AWS account we have created for you. 18 | We have installed the tools needed for you to get going. 19 | 20 | {{% /notice %}} 21 | 22 | 23 | {{% notice note%}} 24 | 25 | If you want to run through this workshop in your own account please check the next section titled *running-yourself*. 26 | 27 | {{% /notice %}} 28 | 29 | 30 | {{% children depth="1" showhidden="false" %}} 31 | -------------------------------------------------------------------------------- /workshop/content/40-reinvent2019/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "2019 AWS re:Invent Workshop" 3 | chapter = false 4 | weight = 800 5 | url = "reInvent2019" 6 | aliases = [ 7 | "reinvent2019", 8 | "reInvent2019" 9 | ] 10 | +++ 11 | 12 | Welcome to the Service Catalog tools workshop at re:Invent 2019. In this workshop, we will walk through using Service Catalog tools to build controls for governance. At the end of the session, we hope that you will go away with tools and techniques to help you build for security and governance requirements using AWS Service Catalog. 13 | 14 | ## House keeping 15 | 16 | Please check through the following to help you get started. 17 | 18 | 19 | ### What to do if you need help 20 | 21 | Raise your hand and a helper will be with you as soon as possible. 22 | 23 | 24 | ### Meet the Team 25 | 26 | In today's workshop you have the following team 27 | 28 | Presenters: 29 | 30 | - Eamonn Faherty 31 | - Jamie McKay 32 | 33 | Workshop helpers: 34 | 35 | - Ritesh Sinha 36 | - Thivan Visvanathan 37 | - Alex Nicot 38 | - Charles Roberts 39 | 40 | ### Lets get going 41 | 42 | When you are ready, click the right arrow to begin! 43 | 44 | {{% notice tip%}} 45 | You can use the left and right arrows to navigate through the Workshop 46 | {{% /notice %}} 47 | -------------------------------------------------------------------------------- /workshop/content/999-further_reading/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Further Reading" 3 | chapter = false 4 | weight = 999 5 | +++ 6 | 7 | From here you can find out more about the Service Catalog Tools the AWS managed services used in the tutorials and 8 | workshops presented on this site. 9 | 10 | 11 | ## Service Catalog Tools 12 | 13 | The following links provide more information on the open source tools used in the tutorials and workshops presented 14 | on this site: 15 | 16 | ### Service Catalog Factory 17 | 18 | - {{% external_link "https://github.com/awslabs/aws-service-catalog-factory" "Github project page for Service Catalog Factory" %}} 19 | - {{% external_link "https://aws-service-catalog-factory.readthedocs.io/en/latest/" "Documentation for Service Catalog Factory" %}} 20 | 21 | 22 | ### Service Catalog Puppet 23 | 24 | - {{% external_link "https://github.com/awslabs/aws-service-catalog-puppet" "Github project page for Service Catalog Puppet" %}} 25 | - {{% external_link "https://aws-service-catalog-puppet.readthedocs.io/en/latest/" "Documentation for Service Catalog Puppet" %}} 26 | 27 | 28 | ### Shared products 29 | 30 | - We have Service Catalog products that you can use with these tools. These products perform actions like setting up multi account AWS Config or AWS Security Hub and more. You can view them on their {{% external_link "https://github.com/awslabs/aws-service-catalog-products" "Github project page" %}}. 31 | 32 | ## AWS Services 33 | 34 | The following links provide more information on the AWS managed services used in the tutorials and workshops presented 35 | on this site: 36 | 37 | ### AWS Service Catalog 38 | - {{% external_link "https://aws.amazon.com/servicecatalog/" "AWS Service Catalog home page" %}} 39 | -------------------------------------------------------------------------------- /workshop/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "AWS Service Catalog Tools Intro Workshop" 3 | chapter: true 4 | weight: 1 5 | --- 6 | 7 | # Welcome Builders! 8 | 9 | This site is a collection of guidance, tutorials and workshops focusing on helping AWS customers build and manage a multi 10 | account environment using the Service Catalog tools. 11 | 12 | Use the headings on the left to find what you are looking for. -------------------------------------------------------------------------------- /workshop/content/design-considerations/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Design considerations" 3 | chapter = false 4 | weight = 40 5 | +++ 6 | 7 | Following the best practices for the Service Catalog Tools will ensure you get the most out of these tools with the most 8 | minimal amount of effort. 9 | 10 | The following articles will help you design your solution. It is recommended you read through each - ideally before you 11 | install the tools or start provisioning / sharing products and portfolios. 12 | 13 | {{% children depth="1" showhidden="false" %}} 14 | -------------------------------------------------------------------------------- /workshop/content/design-considerations/multi-account-strategy/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Multi Account Strategy" 3 | weight = 50 4 | 5 | +++ 6 | --- 7 | 8 | ## What are we going to do? 9 | 10 | This article will help you align your multi-account strategy with best practices. 11 | 12 | 13 | ## AWS Organizations 14 | 15 | AWS Organizations helps you centrally govern your environment as you grow and scale your workloads on AWS. Whether you 16 | are a growing startup or a large enterprise, AWS Organizations helps you to centrally manage billing; control access, 17 | compliance, and security; and share resources across your AWS accounts. 18 | 19 | Using AWS Organizations, you can automate account creation, create groups of accounts to reflect your business needs, 20 | and apply policies for these groups for governance. You can also simplify billing by setting up a single payment method 21 | for all of your AWS accounts. Through integrations with other AWS services, you can use AWS Organizations to define central 22 | configurations and resource sharing across accounts in your organization. AWS Organizations is available to all AWS 23 | customers at no additional charge. 24 | 25 | 26 | ## Getting started 27 | 28 | You can read through the following pages to understand best practices: 29 | 30 | {{% children depth="1" showhidden="false" %}} 31 | 32 | -------------------------------------------------------------------------------- /workshop/content/design-considerations/selecting-a-factory-account/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Selecting a factory account" 3 | weight = 100 4 | 5 | +++ 6 | --- 7 | 8 | ## What are we going to do? 9 | 10 | This article will help you choose which AWS Account is most suitable to use for the Service Catalog Tools 11 | 12 | 13 | ## Recommended background reading? 14 | 15 | It is recommended that you have read the following: 16 | 17 | - }}">Multi Account Strategy 18 | 19 | ## Selecting how many factory accounts to have 20 | 21 | Currently, you can only have one factory per account but you can create multiple accounts each with their own factory. 22 | 23 | If multiple teams want to make use of Service Catalog Factory the recommendation is that each team have 24 | their own instance. The teams are then independent and can operate without impacting each other. There is also a 25 | separation of concerns if there is a security factory account and a networking factory account. This reduces the blast 26 | radius should there be an incident and it enables easier billing calculations. 27 | 28 | If your organization has a central cloud engineering team who work to deliver the requirements of these other teams it 29 | may be easier to manage all of the provisioning from a single factory account. 30 | 31 | 32 | ## Selecting a factory account 33 | 34 | 35 | In order to select a factory account we need to consider how you are going to be using the framework. 36 | 37 | A common use case is where teams use the framework to build and provision security controls into accounts that are operating their customer facing applications. 38 | 39 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/100-creating-a-product/305-creating-codestar-pipelines.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Creating CodeStar pipelines" 3 | weight = 305 4 | home_region = "eu-west-1" 5 | +++ 6 | --- 7 | 8 | ## What are we going to do? 9 | 10 | We are going to perform the following steps: 11 | 12 | - How to use AWS CodeStar Connections as a source for your pipelines (for Github.com/Github Enterprise and BitBucket Cloud) 13 | 14 | ## Step by step guide 15 | 16 | Here are the steps you need to follow to "{{% param title %}}" 17 | 18 | 19 | ### Add the source code for your product 20 | When you configured your product version, you may have specified the following: 21 | 22 |
23 | {{< highlight js >}} 24 | Versions: 25 | - Name: "v1" 26 | Description: "v1 of aws-config-enable-config" 27 | Source: 28 | Provider: "CodeCommit" 29 | Configuration: 30 | RepositoryName: "aws-config-enable-config" 31 | BranchName: "v1" 32 | {{< / highlight >}} 33 |
34 | 35 | This would have taken your products source code from CodeCommit. If you are using BitBucket Cloud, Github.com or Github 36 | Enterprise (where you can use AWS CodeStar Connections) you may want to use CodeStar Connections to simplify the creation 37 | of product version pipelines. 38 | 39 | To do so, you can specify the following: 40 | 41 |
42 | {{< highlight js >}} 43 | Versions: 44 | - Name: "v1" 45 | Description: "v1 of aws-config-enable-config" 46 | Source: 47 | Provider: "CodeStarSourceConnection" 48 | Configuration: 49 | BranchName: "v1" 50 | ConnectionArn: "arn:aws:codestar-connections:eu-west-1:0123456789010:connection/eb6703af-6407-0522dc6a6" 51 | FullRepositoryId: "exampleorg/aws-config-enable-config" 52 | {{< / highlight >}} 53 |
54 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/100-creating-a-product/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Creating a product" 3 | weight = 100 4 | +++ 5 | --- 6 | 7 | This tutorial will walk you through "{{% param title %}}" 8 | 9 | We will assume you have: 10 | 11 | - installed Service Catalog Factory correctly 12 | 13 | In the tutorial you will: 14 | 15 | {{% children depth="1" showhidden="false" %}} 16 | 17 | During this process you will check your progress by verifying what the framework is doing. 18 | 19 | 20 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/100-creating-a-product/artefacts/factory/create-the-product--product-only.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" -------------------------------------------------------------------------------- /workshop/content/every-day-use/100-creating-a-product/artefacts/factory/create-the-version--product_and_version.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/100-creating-a-product/artefacts/factory/create-the-version--version-only.yaml: -------------------------------------------------------------------------------- 1 | Versions: 2 | - Name: "v1" 3 | Description: "v1 of aws-config-enable-config" 4 | Active: True 5 | Source: 6 | Provider: "CodeCommit" 7 | Configuration: 8 | RepositoryName: "aws-config-enable-config" 9 | BranchName: "main" -------------------------------------------------------------------------------- /workshop/content/every-day-use/110-deleting-a-product/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Deleting a product" 3 | weight = 110 4 | +++ 5 | --- 6 | 7 | This tutorial will walk you through "{{% param title %}}" 8 | 9 | We will assume you have: 10 | 11 | - installed Service Catalog Factory correctly 12 | - added a product correctly 13 | 14 | In the tutorial you will: 15 | 16 | {{% children depth="1" showhidden="false" %}} 17 | 18 | During this process you will check your progress by verifying what the framework is doing. 19 | 20 | Once you have finished following the steps here you will need to delete the provisioning artefacts and products from 21 | your account as this feature has not been built yet. To request this feature please +1 this: https://github.com/awslabs/aws-service-catalog-factory/issues/302 22 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/110-deleting-a-product/artefacts/factory/create-the-product--product-only.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" -------------------------------------------------------------------------------- /workshop/content/every-day-use/110-deleting-a-product/artefacts/factory/create-the-version--product_and_version.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/110-deleting-a-product/artefacts/factory/create-the-version--version-only.yaml: -------------------------------------------------------------------------------- 1 | Versions: 2 | - Name: "v1" 3 | Description: "v1 of aws-config-enable-config" 4 | Active: True 5 | Source: 6 | Provider: "CodeCommit" 7 | Configuration: 8 | RepositoryName: "aws-config-enable-config" 9 | BranchName: "main" -------------------------------------------------------------------------------- /workshop/content/every-day-use/150-creating-a-portfolio/artefacts/factory/completed.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | Portfolios: 27 | - "cloud-engineering-governance" 28 | Portfolios: 29 | - DisplayName: "cloud-engineering-governance" 30 | Description: "Portfolio containing the products needed to govern AWS accounts" 31 | ProviderName: "cloud-engineering" 32 | Associations: 33 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 34 | Tags: 35 | - Key: "type" 36 | Value: "governance" 37 | - Key: "creator" 38 | Value: "cloud-engineering" 39 | - Key: "cost-center" 40 | Value: "cloud-engineering" 41 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/150-creating-a-portfolio/artefacts/factory/create-the-portfolio--portfolio_only.yaml: -------------------------------------------------------------------------------- 1 | Portfolios: 2 | - DisplayName: "cloud-engineering-governance" 3 | Description: "Portfolio containing the products needed to govern AWS accounts" 4 | ProviderName: "cloud-engineering" 5 | Associations: 6 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 7 | Tags: 8 | - Key: "type" 9 | Value: "governance" 10 | - Key: "creator" 11 | Value: "cloud-engineering" 12 | - Key: "cost-center" 13 | Value: "cloud-engineering" 14 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/150-creating-a-portfolio/artefacts/factory/create-the-portfolio--portfolio_product_and_version.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: 'https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config' 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | Portfolios: 27 | - DisplayName: "cloud-engineering-governance" 28 | Description: "Portfolio containing the products needed to govern AWS accounts" 29 | ProviderName: "cloud-engineering" 30 | Associations: 31 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 32 | Tags: 33 | - Key: "type" 34 | Value: "governance" 35 | - Key: "creator" 36 | Value: "cloud-engineering" 37 | - Key: "cost-center" 38 | Value: "cloud-engineering" 39 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/180-adding-a-product-to-a-portfolio/artefacts/factory/completed.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | Portfolios: 27 | - "cloud-engineering-governance" 28 | Portfolios: 29 | - DisplayName: "cloud-engineering-governance" 30 | Description: "Portfolio containing the products needed to govern AWS accounts" 31 | ProviderName: "cloud-engineering" 32 | Associations: 33 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 34 | Tags: 35 | - Key: "type" 36 | Value: "governance" 37 | - Key: "creator" 38 | Value: "cloud-engineering" 39 | - Key: "cost-center" 40 | Value: "cloud-engineering" 41 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/180-adding-a-product-to-a-portfolio/artefacts/factory/create-the-portfolio--portfolio_only.yaml: -------------------------------------------------------------------------------- 1 | Portfolios: 2 | - DisplayName: "cloud-engineering-governance" 3 | Description: "Portfolio containing the products needed to govern AWS accounts" 4 | ProviderName: "cloud-engineering" 5 | Associations: 6 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 7 | Tags: 8 | - Key: "type" 9 | Value: "governance" 10 | - Key: "creator" 11 | Value: "cloud-engineering" 12 | - Key: "cost-center" 13 | Value: "cloud-engineering" 14 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/180-adding-a-product-to-a-portfolio/artefacts/factory/create-the-portfolio--portfolio_product_and_version.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: 'https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config' 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | Portfolios: 27 | - DisplayName: "cloud-engineering-governance" 28 | Description: "Portfolio containing the products needed to govern AWS accounts" 29 | ProviderName: "cloud-engineering" 30 | Associations: 31 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 32 | Tags: 33 | - Key: "type" 34 | Value: "governance" 35 | - Key: "creator" 36 | Value: "cloud-engineering" 37 | - Key: "cost-center" 38 | Value: "cloud-engineering" 39 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/180-adding-a-product-to-a-portfolio/artefacts/orchestrator/manifest-accounts-only.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | - "eu-west-2" 8 | tags: 9 | - "type:prod" 10 | - "partition:eu" 11 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/180-adding-a-product-to-a-portfolio/artefacts/orchestrator/manifest-all.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | - "eu-west-2" 8 | tags: 9 | - "type:prod" 10 | - "partition:eu" 11 | launches: 12 | aws-config-enable-config: 13 | portfolio: "reinvent-cloud-engineering-governance" 14 | product: "aws-config-enable-config" 15 | version: "v1" 16 | deploy_to: 17 | tags: 18 | - tag: "type:prod" 19 | regions: "default_region" 20 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/180-adding-a-product-to-a-portfolio/artefacts/orchestrator/manifest-launches-only.yaml: -------------------------------------------------------------------------------- 1 | launches: 2 | aws-config-enable-config: 3 | portfolio: "reinvent-cloud-engineering-governance" 4 | product: "aws-config-enable-config" 5 | version: "v1" 6 | deploy_to: 7 | tags: 8 | - tag: "type:prod" 9 | regions: "default_region" 10 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/192-adding-an-account/artefacts/orchestrator/manifest-accounts-only.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | - "eu-west-2" 8 | tags: 9 | - "type:prod" 10 | - "partition:eu" -------------------------------------------------------------------------------- /workshop/content/every-day-use/200-provisioning-a-product/artefacts/factory/completed.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: "https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config" 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | Portfolios: 27 | - "cloud-engineering-governance" 28 | Portfolios: 29 | - DisplayName: "cloud-engineering-governance" 30 | Description: "Portfolio containing the products needed to govern AWS accounts" 31 | ProviderName: "cloud-engineering" 32 | Associations: 33 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 34 | Tags: 35 | - Key: "type" 36 | Value: "governance" 37 | - Key: "creator" 38 | Value: "cloud-engineering" 39 | - Key: "cost-center" 40 | Value: "cloud-engineering" 41 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/200-provisioning-a-product/artefacts/factory/create-the-portfolio--portfolio_only.yaml: -------------------------------------------------------------------------------- 1 | Portfolios: 2 | - DisplayName: "cloud-engineering-governance" 3 | Description: "Portfolio containing the products needed to govern AWS accounts" 4 | ProviderName: "cloud-engineering" 5 | Associations: 6 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 7 | Tags: 8 | - Key: "type" 9 | Value: "governance" 10 | - Key: "creator" 11 | Value: "cloud-engineering" 12 | - Key: "cost-center" 13 | Value: "cloud-engineering" 14 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/200-provisioning-a-product/artefacts/factory/create-the-portfolio--portfolio_product_and_version.yaml: -------------------------------------------------------------------------------- 1 | Schema: factory-2019-04-01 2 | Products: 3 | - Name: "aws-config-enable-config" 4 | Owner: "data-governance@example.com" 5 | Description: "Enables AWS Config" 6 | Distributor: "cloud-engineering" 7 | SupportDescription: "Speak to data-governance@example.com about exceptions and speak to cloud-engineering@example.com about implementation issues" 8 | SupportEmail: "cloud-engineering@example.com" 9 | SupportUrl: 'https://wiki.example.com/cloud-engineering/governance/aws-config-enable-config' 10 | Tags: 11 | - Key: "type" 12 | Value: "governance" 13 | - Key: "creator" 14 | Value: "cloud-engineering" 15 | - Key: "cost-center" 16 | Value: "cloud-engineering" 17 | Versions: 18 | - Name: "v1" 19 | Description: "v1 of aws-config-enable-config" 20 | Active: True 21 | Source: 22 | Provider: "CodeCommit" 23 | Configuration: 24 | RepositoryName: "aws-config-enable-config" 25 | BranchName: "main" 26 | Portfolios: 27 | - DisplayName: "cloud-engineering-governance" 28 | Description: "Portfolio containing the products needed to govern AWS accounts" 29 | ProviderName: "cloud-engineering" 30 | Associations: 31 | - "arn:aws:iam::${AWS::AccountId}:role/TeamRole" 32 | Tags: 33 | - Key: "type" 34 | Value: "governance" 35 | - Key: "creator" 36 | Value: "cloud-engineering" 37 | - Key: "cost-center" 38 | Value: "cloud-engineering" 39 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/200-provisioning-a-product/artefacts/orchestrator/manifest-accounts-only.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | - "eu-west-2" 8 | tags: 9 | - "type:prod" 10 | - "partition:eu" 11 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/200-provisioning-a-product/artefacts/orchestrator/manifest-all.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - account_id: "" 3 | name: "puppet-account" 4 | default_region: "eu-west-1" 5 | regions_enabled: 6 | - "eu-west-1" 7 | - "eu-west-2" 8 | tags: 9 | - "type:prod" 10 | - "partition:eu" 11 | launches: 12 | aws-config-enable-config: 13 | portfolio: "reinvent-cloud-engineering-governance" 14 | product: "aws-config-enable-config" 15 | version: "v1" 16 | deploy_to: 17 | tags: 18 | - tag: "type:prod" 19 | regions: "default_region" 20 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/200-provisioning-a-product/artefacts/orchestrator/manifest-launches-only.yaml: -------------------------------------------------------------------------------- 1 | launches: 2 | aws-config-enable-config: 3 | portfolio: "reinvent-cloud-engineering-governance" 4 | product: "aws-config-enable-config" 5 | version: "v1" 6 | deploy_to: 7 | tags: 8 | - tag: "type:prod" 9 | regions: "default_region" 10 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/360-aws-organizations-integration/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "AWS Organizations Integration" 3 | weight = 360 4 | +++ 5 | --- 6 | 7 | This tutorial will walk you through "{{% param title %}}" with Service Catalog Tools. 8 | 9 | We will assume you have: 10 | 11 | - installed Service Catalog Puppet correctly 12 | - [setup AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html) including: 13 | - a [Management Account](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) 14 | - [Member Account(s)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) in an [Organizational Unit (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) 15 | - [setup an IAM Role for AWS Organizations]({{< ref "/installation/30-service-catalog-puppet/10-using-aws-organizations" >}} "Setup Organizations") 16 | - bootstrapped a spoke 17 | - created a product 18 | - created a portfolio 19 | 20 | In the tutorial you will look at: 21 | 22 | {{% children depth="1" showhidden="false" %}} 23 | 24 | During this process you will check your progress by verifying what the framework is doing. 25 | 26 | 27 | -------------------------------------------------------------------------------- /workshop/content/every-day-use/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Every day use" 3 | chapter = true 4 | weight = 50 5 | aliases = [ 6 | "/30-how-tos/50-every-day-use.html", 7 | ] 8 | +++ 9 | 10 | # Welcome builders 11 | 12 | From here you can see a list of our how to articles 13 | 14 | {{% notice tip%}} 15 | You can use the left and right arrows to navigate 16 | {{% /notice %}} 17 | 18 | 19 | {{% children depth="1" showhidden="false" %}} -------------------------------------------------------------------------------- /workshop/content/installation/30-service-catalog-puppet/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Service Catalog Puppet" 3 | weight = 30 4 | aliases = [ 5 | "/30-how-tos/10-installation/30-service-catalog-puppet.html", 6 | "/installation/30-service-catalog-puppet.html" 7 | ] 8 | +++ 9 | 10 | 11 | Service Catalog Puppet does not depend on AWS Organizations. 12 | 13 | Using AWS Organizations provides performance and productivity improvements but it is optional. If you would like to use 14 | it please follow the "Using AWS Organizations" step below before you continue with the "Installing Puppet" step. 15 | 16 | {{% children depth="1" showhidden="false" %}} -------------------------------------------------------------------------------- /workshop/content/installation/50-bootstrapping/80-restricting-spokes.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Restricting Spokes" 3 | chapter = false 4 | weight = 80 5 | 6 | +++ 7 | 8 | ### Restricting spokes 9 | 10 | The *PuppetRole* created by the framework has the *AdministratorAccess* IAM managed policy attached to it. It is 11 | reccommended that you can define an 12 | [IAM Permission Boundary](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) for the 13 | *PuppetRole* for any production applications of this framework. 14 | 15 | The IAM Permission Boundary you provide should permit the *PuppetRole* to interact with AWS Service Catalog to accept 16 | shares, manage portfolios and to add, provision and terminate products. In addition the IAM Role should allow the use of 17 | AWS SNS, AWS EventBridge, AWS OpsCenter if you are making use of those features. 18 | 19 | In order to use an IAM Permission Boundary you will need to append the following to your commands: 20 | 21 | {{< highlight bash >}} 22 | --permission-boundary arn:aws:iam::aws:policy/AdministratorAccess 23 | {{< / highlight >}} 24 | 25 | There will be an example of this for each command in these _how tos_. 26 | -------------------------------------------------------------------------------- /workshop/content/installation/50-bootstrapping/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Onboarding spokes" 3 | weight = 50 4 | +++ 5 | 6 | 7 | As part of the installation process of installing puppet into your hub account that account is bootstrapped as a spoke 8 | so you can use it via automation. 9 | 10 | If you want to configure other accounts using the Service Catalog Tools you will need to bootstrap those too. 11 | 12 | You can use the following options to bootstrap accounts: 13 | 14 | 15 | {{% children depth="1" showhidden="false" %}} -------------------------------------------------------------------------------- /workshop/content/installation/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Installation" 3 | weight = 20 4 | +++ 5 | 6 | 7 | ## Prerequisites 8 | In order to install these tools you will need: 9 | 10 | - A single AWS Account which you can log into 11 | - A web browser where to access the AWS console. 12 | 13 | You will also need to decide which account to install these tools into. 14 | 15 | This account will contain the AWS CodePipelines and will need to be accessible to any accounts you would like to share 16 | products with. If you want to use the optional AWS Organizations support you will need to install the tools into an 17 | AWS Account where there is (or can be) a trust relationship with the AWS Organizations management account. You can install these 18 | tools into your management account but this is not recommended. 19 | 20 | Both tools should be installed into the same region of the same account. 21 | 22 | ## Task list 23 | 24 | Here: 25 | 26 | {{% children depth="1" showhidden="false" %}} -------------------------------------------------------------------------------- /workshop/content/managing-your-environments/GitOps/conditions.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Conditions" 3 | weight = 120 4 | home_region = "eu-west-1" 5 | aliases = [ 6 | "/every-day-use/900-multi-org-usage.html", 7 | ] 8 | +++ 9 | --- 10 | 11 | ### Conditions 12 | 13 | You can create conditions within your manifest file. These conditions work just like the AWS CloudFormation conditions 14 | and can be used to decide whether actions occur or not: 15 | 16 |
17 | {{< highlight js >}} 18 | conditions: 19 | IsDev: !Equals 20 | - 156551640785 21 | - ${AWS::PuppetAccountId} 22 | IsProd: !Not 23 | - !Equals 24 | - 156551640785 25 | - ${AWS::PuppetAccountId} 26 | {{< / highlight >}} 27 |
28 | 29 | At the moment you can use Equals and Not functions to create conditions. Then you can specify conditions for your 30 | stacks and other actions: 31 | 32 |
33 | {{< highlight js >}} 34 | stacks: 35 | amazon-guardduty-multi-account-prereqs-orgs-account: 36 | condition: IsDev 37 | name: amazon-guardduty-multi-account-prereqs-orgs-account 38 | version: v1 39 | execution: hub 40 | capabilities: 41 | - CAPABILITY_NAMED_IAM 42 | deploy_to: 43 | tags: 44 | - tag: 'role:org_management' 45 | regions: default_region 46 | outputs: 47 | ssm: 48 | - param_name: "/foundational/GuardDutyMultiAccount/GuardDutyMultiAccountDelegateAdminRoleArn" 49 | stack_output: GuardDutyMultiAccountDelegateAdminRoleArn 50 | {{< / highlight >}} 51 |
52 | 53 | When you use conditions you are responsible for ensuring that all actions referenced within the depends_on have the same 54 | conditions. 55 | -------------------------------------------------------------------------------- /workshop/content/managing-your-environments/GitOps/manifest-properties.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Manifest properties" 3 | weight = 140 4 | home_region = "eu-west-1" 5 | aliases = [ 6 | "/every-day-use/900-multi-org-usage.html", 7 | ] 8 | +++ 9 | --- 10 | 11 | ### Manifest properties 12 | 13 | If you are using puppet to manage multiple environments you may find it easier to keep the versions of your launches in 14 | properties files instead of the manifest.yaml files. To do this you create a file named manifest.properties in the same 15 | directory as your manifest.yaml file. Within this file you can specify the following: 16 | 17 |
18 | {{< highlight ini >}} 19 | [launches] 20 | IAM-1.version = v50 21 | {{< / highlight >}} 22 |
23 | 24 | This will set the version for the launch with the name IAM-1 to v50. 25 | 26 | Please note this will overwrite the values specified in the manifest.yaml files with no warning. 27 | 28 | If you are using multiple instances of puppet you can also create a file named manifest-.properties. 29 | Values in this file will overwrite all other values making the order of reading: 30 | 31 | 1. manifest.yaml 32 | 2. other manifest files (eg in manifests/) 33 | 3. manifest.properties 34 | 4. manifest-<>.properties -------------------------------------------------------------------------------- /workshop/content/managing-your-environments/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Managing your environments" 3 | chapter = false 4 | weight = 40 5 | +++ 6 | 7 | Following the best practices for the Service Catalog Tools will ensure you get the most out of these tools with the most 8 | minimal amount of effort. 9 | 10 | The following articles will help you design your solution. It is recommended you read through each - ideally before you 11 | install the tools or start provisioning / sharing products and portfolios. 12 | 13 | {{% children depth="1" showhidden="false" %}} 14 | -------------------------------------------------------------------------------- /workshop/content/managing-your-environments/dont-repeat-yourself/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Don't Repeat Yourself" 3 | weight = 110 4 | +++ 5 | --- 6 | 7 | 8 | ## Don't Repeat Yourself 9 | 10 | When you are managing your environments it is best to avoid duplication in your configurations. Duplication can 11 | increase the cost of change which may reduce your appetite to make lower priority changes leading to higher technical 12 | debt. Duplication can also lead to more human error as you may make a change in only one place instead of many and in 13 | the instance where you need to roll out a change quickly duplication can slow you down. 14 | 15 | There are different ways of removing duplication as different scenarios call for different solutions. They are grouped 16 | into categories below: 17 | 18 | {{% children depth="1" showhidden="false" %}} 19 | -------------------------------------------------------------------------------- /workshop/content/managing-your-environments/workflow-tracing/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Workflow Tracing" 3 | weight = 114 4 | +++ 5 | --- 6 | 7 | ## What are we going to do? 8 | This article will help you to understand how to visualise a completed workflow (pipeline). 9 | 10 | ## Why is this important 11 | As your adoption of this solution develops your workflow will grow and your pipeline will take longer to run. 12 | Visualising the workflow allows you to see how long tasks take to execute, what order they execute in and what blocks 13 | other tasks from executing. The visualisation also allows you to see the saturation of the workers to help you decide 14 | if you need to increase the number of workers. 15 | 16 | ### Generating the traces 17 | As the workflow runs traces are generated and stored in Amazon S3. It is possible to export these traces in the Google 18 | Trace Event format using the following command: 19 | 20 |
21 | {{< highlight shell >}} 22 | servicecatalog-puppet export-traces 23 | {{< / highlight >}} 24 |
25 | 26 | This will produce the input needed when using solutions like [Perfetto](https://ui.perfetto.dev/) 27 | 28 | ### Running Perfetto locally 29 | You may prefer to run Perfetto locally. To do so you can check out 30 | [VizTracer](https://viztracer.readthedocs.io/en/latest/) which provides some helper commands to get it up and running 31 | quickly. -------------------------------------------------------------------------------- /workshop/content/tools/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Service Catalog Tools" 3 | chapter = false 4 | weight = 11 5 | +++ 6 | --- 7 | 8 | ## What are the Service Catalog Tools 9 | 10 | The Service Catalog Tools are a collection of open source tools authored to help you manage a multi account AWS 11 | environment. 12 | 13 | To find out more about the tools please read through the following: 14 | 15 | {{% children depth="1" showhidden="false" %}} -------------------------------------------------------------------------------- /workshop/content/upgrading/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Upgrading" 3 | weight = 25 4 | +++ 5 | 6 | 7 | ## Prerequisites 8 | In order to upgrade these tools you will need: 9 | 10 | - to have installed the tools 11 | 12 | 13 | ## Task list 14 | 15 | {{% children depth="1" showhidden="false" %}} -------------------------------------------------------------------------------- /workshop/data/common.toml: -------------------------------------------------------------------------------- 1 | [cdk] 2 | version = "0.37.0" -------------------------------------------------------------------------------- /workshop/diagrams/table-viewer: -------------------------------------------------------------------------------- 1 | 7Vhbj6MgFP4t++BjG5Va7WMvc9lkJpmkm708bahSJYPSIL3Nr19QtAI26WybmWSzfZiRw+Fw/L7DB+iAeX54YHCTPdMEEcd3k4MDFo7ve57nin/ScqwtkRvUhpThRDmdDEv8hpRRjUu3OEGl5sgpJRxvdGNMiwLFXLNBxuhed1tTos+6gSmyDMsYEtv6Ayc8U28RuCf7I8Jp1szsuapnBePXlNFtoeZzfLCufnV3DptYyr/MYEL3HRO4c8CcUcrrp/wwR0Ri28BWj7s/09vmzVDBLxkQ1QN2kGxRk3GVFz82WNAtJ7hA8xZq1wGzBJYZSlRjhxjHArwnuELkhZaYY1qIvhXlnOYdhynBqezgdCOsULVikStiwpDxnIi2Jx4FLhs5f35IZYUN4b4Ew+RYwJz+TlbCYY0JmVNCWZUk8O9CMIuEXbgnWARs+gpaiDgzGxcFlUwNHTomhdMDojni7ChcVG8QKs5UTftgNFRVvT/VSKgAzDrlETWVqaoybWOfmBEPipx+onqYep4+fJ1/sfiqqq/lZp9hjpYbGMvevcBSx7nlUTbWtOBLFQjYGKtCFuRwRl9Rp8etfi3MFqY9yJ+FGQAD5kYTOiB7zfLpouw1A6+CeWLB/A2uCPqO0V7UqIm1eE1uFK6Gjaq+LpDK1BQ/QWves0JynCRykl7+dIZtCms59QKD0nMVfw073qSHnVHPGvBvQA7wLHIsRlCRTOUGIHWFwLLEsc5PPQAllv5bylDSLYuRvvo4ZClqVnU/UB0ggp4qbWwMEcjxTs+iDxw1wwvFIr+Wh9E41HkYB3qIOns1qrsBGIECzwjkGYHqV7YCCZDhseO2kQ6lxWYLzGUE+9cTLGhkx59qbVSNX7IxDN5Ffpfoz2XaM7ed8C+ZBr4/jIKJGwJQ/x3rcc0V+qHEA4v4aSFnWVRb/kIw51Y6fIECM1Tit8q3rgGVoPAOZk6w6Dt4nFVfIk80s/ZM17cZnhVVdTZVmTgtvt1qqwv+rNoO3KEfRZOb1BEIJxrfgVFGdL0uEb+Wx7HFY8a5PLRPZVj/fif20UF+HPD/ZF4lCkDjcmCK9m3IHN1AjQ+YV2I8dN1ItWs9DlXrBTEskpLULdwrN+jP0mh/oms0cA0tvVSjTbG3An2oKAcW/4/fnp/+tVU7+rBVO4iMVWuQe5tVG9pbacypfXdprtjbnNQOF1zkLyCj/67fKY7e7wnGdegso5ffVDzzHhkEPdd10CMK4/dfVUTz9M2mJu30YQzc/QE= -------------------------------------------------------------------------------- /workshop/ee_blueprint/blah.json: -------------------------------------------------------------------------------- 1 | { name: "John", age: 31, city: "New York" } -------------------------------------------------------------------------------- /workshop/ee_blueprint/ee_readme.md: -------------------------------------------------------------------------------- 1 | # Welcome to the Workshop 2 | 3 | Thank you for joining us. Within this Workshop you will learn how to use the open source Service Catalog tools to deploy AWS Service Catalog Products to secure and govern your AWS Account estate. 4 | 5 | The service catalog tools are a suite of tools built to power you with agility and speed enabling you to reliably build, share and launch AWS Service Catalog products across your multi-region and multi-account AWS environment. 6 | 7 | ### What will we be doing today: 8 | 9 | - A brief presentation on the open source Service Catalog Tools we will be using 10 | - Diving into the Workshop which will: 11 | - Install the Tools into your AWS Account 12 | - Create a new Service Catalog portfolio 13 | - Create and Launch an IAM Product 14 | - Create and Launch an S3 Bucket product 15 | - Create and Launch an AWS Config Product 16 | 17 | ### Instructions 18 | 19 | - You can find the Workshop Instructions [here](Service-catalog-tools-workshop.com/40-reinvent2019.html) 20 | - To Login to the AWS Console refer to the card that you were given when you entered the room 21 | 22 | 23 | _Version: 01 December 2019_ -------------------------------------------------------------------------------- /workshop/ee_blueprint/install_tools.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: 2010-09-09 2 | Description: "This template uses Stack Resource to install Service Catalog Factory and Puppet" 3 | 4 | Resources: 5 | FactoryInstall: 6 | Type: AWS::CloudFormation::Stack 7 | Properties: 8 | Parameters: 9 | EnabledRegions: eu-west-1 10 | TemplateURL: "https://service-catalog-tools.s3.eu-west-2.amazonaws.com/factory/latest/servicecatalog-factory-initialiser.template.yaml" 11 | TimeoutInMinutes: 10 12 | PuppetInstall: 13 | Type: AWS::CloudFormation::Stack 14 | Properties: 15 | Parameters: 16 | EnabledRegions: eu-west-1 17 | ShouldCollectCloudformationEvents: False 18 | ShouldForwardEventsToEventbridge: False 19 | ShouldForwardFailuresToOpscenter: False 20 | TemplateURL: "https://service-catalog-tools.s3.eu-west-2.amazonaws.com/puppet/latest/servicecatalog-puppet-initialiser.template.yaml" 21 | TimeoutInMinutes: 10 -------------------------------------------------------------------------------- /workshop/ee_blueprint/reinvent-s3_bucket.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: 'This template deploys an S3 Bucket into the provisioning Account without Encryption' 3 | Resources: 4 | S3Bucket: 5 | Type: AWS::S3::Bucket 6 | Properties: 7 | PublicAccessBlockConfiguration: 8 | BlockPublicAcls: True 9 | BlockPublicPolicy: True 10 | IgnorePublicAcls: True 11 | RestrictPublicBuckets: True 12 | Outputs: 13 | S3BucketName: 14 | Value: !GetAtt S3Bucket.Arn 15 | -------------------------------------------------------------------------------- /workshop/layouts/partials/custom-footer.html: -------------------------------------------------------------------------------- 1 | {{ template "_internal/google_analytics.html" . }} 2 | -------------------------------------------------------------------------------- /workshop/layouts/partials/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /workshop/layouts/partials/menu-footer.html: -------------------------------------------------------------------------------- 1 | 2 | Privacy | Site Terms | © 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved. 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/cdkversion.html: -------------------------------------------------------------------------------- 1 | {{ $.Site.Data.common.cdk.version }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/cloudformation_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "CloudFormation Console" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/codecommit_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "AWS CodeCommit" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/codepipeline_pipeline_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{ $pipeline_name := .Get 0 }} {{printf "%s" $region $pipeline_name $region $pipeline_name | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/config_rules_list_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "AWS Config rules" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/content.html: -------------------------------------------------------------------------------- 1 | {{$file := .Get 0}} 2 | {{ $file | readFile | markdownify }} 3 | -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/external_link.html: -------------------------------------------------------------------------------- 1 | {{ $href := .Get 0 }}{{ $name := .Get 1 }} {{printf "%s" $href $name | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/iam_groups_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "IAM Groups Console" $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_factory_code_commit_repo_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "ServiceCatalogFactory CodeCommit repository" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_factory_pipeline_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "ServiceCatalogFactory Pipeline" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_portfolios_list_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "Service Catalog portfolios" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_products_list_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "Service Catalog products" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_provisioned_products_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "Service Catalog provisioned products" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_puppet_code_commit_repo_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "ServiceCatalogPuppet CodeCommit repository" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/layouts/shortcodes/service_catalog_puppet_pipeline_link.html: -------------------------------------------------------------------------------- 1 | {{ $region := .Page.Params.home_region }} {{printf "ServiceCatalogPuppet Pipeline" $region $region | safeHTML }} -------------------------------------------------------------------------------- /workshop/static/640px-Amazon_Web_Services_Logo.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/640px-Amazon_Web_Services_Logo.svg.png -------------------------------------------------------------------------------- /workshop/static/CNAME: -------------------------------------------------------------------------------- 1 | service-catalog-tools-workshop.com 2 | -------------------------------------------------------------------------------- /workshop/static/acknowledge_create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/acknowledge_create.png -------------------------------------------------------------------------------- /workshop/static/confirm_create_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/confirm_create_stack.png -------------------------------------------------------------------------------- /workshop/static/confirm_start_factory_codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/confirm_start_factory_codebuild.png -------------------------------------------------------------------------------- /workshop/static/create_complete_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/create_complete_factory.png -------------------------------------------------------------------------------- /workshop/static/create_complete_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/create_complete_puppet.png -------------------------------------------------------------------------------- /workshop/static/create_in_progress_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/create_in_progress_factory.png -------------------------------------------------------------------------------- /workshop/static/create_in_progress_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/create_in_progress_puppet.png -------------------------------------------------------------------------------- /workshop/static/create_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/create_stack.png -------------------------------------------------------------------------------- /workshop/static/create_stack_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/create_stack_puppet.png -------------------------------------------------------------------------------- /workshop/static/design-considerations/multi-account-strategy/starter-multi-account-framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/design-considerations/multi-account-strategy/starter-multi-account-framework.png -------------------------------------------------------------------------------- /workshop/static/factory_cloudformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/factory_cloudformation.png -------------------------------------------------------------------------------- /workshop/static/factory_codebuild_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/factory_codebuild_complete.png -------------------------------------------------------------------------------- /workshop/static/factory_codecommit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/factory_codecommit.png -------------------------------------------------------------------------------- /workshop/static/factory_codepipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/factory_codepipeline.png -------------------------------------------------------------------------------- /workshop/static/factory_initialize_codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/factory_initialize_codebuild.png -------------------------------------------------------------------------------- /workshop/static/factory_s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/factory_s3.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/ClickAwsConfigS3BucketServerSideEncryptionEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/ClickAwsConfigS3BucketServerSideEncryptionEnabled.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/ClickAwsConfigS3BucketServerSideEncryptionEnabledV1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/ClickAwsConfigS3BucketServerSideEncryptionEnabledV1.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/ClickCreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/ClickCreate.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/ClickEdit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/ClickEdit.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/ClickOnPortfolios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/ClickOnPortfolios.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/ClickOnreinvent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/ClickOnreinvent.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/CommitChanges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/CommitChanges.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/CommitChangesEmpty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/CommitChangesEmpty.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/CreateRepository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/CreateRepository.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/EnableOrganizationalSharing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/EnableOrganizationalSharing.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/FilterByAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/FilterByAccount.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/InputTheName.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/InputTheName.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/PortfolioReinventCloudEngineeringGovernance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/PortfolioReinventCloudEngineeringGovernance.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SeeYourPortfolio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SeeYourPortfolio.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SeeYourTask1Product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SeeYourTask1Product.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SeeYourTask1ProductVersion1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SeeYourTask1ProductVersion1.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulFactoryProductRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulFactoryProductRun.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulFactoryRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulFactoryRun.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulPuppetRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulPuppetRun.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulPuppetRunV2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/SuccessfulPuppetRunV2.png -------------------------------------------------------------------------------- /workshop/static/how-tos/creating-and-provisioning-a-product/create_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/creating-and-provisioning-a-product/create_file.png -------------------------------------------------------------------------------- /workshop/static/how-tos/deleting-a-product/product-is-inactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/deleting-a-product/product-is-inactive.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/acknowledge_create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/acknowledge_create.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/create_complete_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/create_complete_factory.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/create_complete_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/create_complete_puppet.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/create_in_progress_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/create_in_progress_factory.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/create_in_progress_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/create_in_progress_puppet.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/create_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/create_stack.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/create_stack_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/create_stack_puppet.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/factory_cloudformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/factory_cloudformation.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/factory_codebuild_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/factory_codebuild_complete.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/factory_codecommit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/factory_codecommit.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/factory_codepipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/factory_codepipeline.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/puppet_cloudformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/puppet_cloudformation.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/puppet_codebuild_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/puppet_codebuild_complete.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/puppet_codecommit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/puppet_codecommit.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/puppet_codepipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/puppet_codepipeline.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/puppet_s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/puppet_s3.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/select_cloudformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/select_cloudformation.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/specify_stack_details_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/specify_stack_details_puppet.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/specify_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/specify_template.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/specify_template_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/specify_template_puppet.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/stack_details_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/stack_details_factory.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/start_factory_codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/start_factory_codebuild.png -------------------------------------------------------------------------------- /workshop/static/how-tos/installation/start_puppet_codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/installation/start_puppet_codebuild.png -------------------------------------------------------------------------------- /workshop/static/how-tos/invoking-a-lambda-function/commit_changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/invoking-a-lambda-function/commit_changes.png -------------------------------------------------------------------------------- /workshop/static/how-tos/invoking-a-lambda-function/iam_groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/invoking-a-lambda-function/iam_groups.png -------------------------------------------------------------------------------- /workshop/static/how-tos/sharing-portfolios/SLP-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/how-tos/sharing-portfolios/SLP-tasks.png -------------------------------------------------------------------------------- /workshop/static/images/factory/factory-conceptual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/factory/factory-conceptual.png -------------------------------------------------------------------------------- /workshop/static/images/factory/factory-pipelines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/factory/factory-pipelines.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/assertions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/assertions.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/code-build-runs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/code-build-runs.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/lambda-invocations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/lambda-invocations.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/launches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/launches.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/puppet-conceptual-spoke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/puppet-conceptual-spoke.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/puppet-conceptual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/puppet-conceptual.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/spoke-local-portfolios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/spoke-local-portfolios.png -------------------------------------------------------------------------------- /workshop/static/images/puppet/stacks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/images/puppet/stacks.png -------------------------------------------------------------------------------- /workshop/static/jm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/jm.png -------------------------------------------------------------------------------- /workshop/static/puppet_cloudformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/puppet_cloudformation.png -------------------------------------------------------------------------------- /workshop/static/puppet_codebuild_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/puppet_codebuild_complete.png -------------------------------------------------------------------------------- /workshop/static/puppet_codecommit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/puppet_codecommit.png -------------------------------------------------------------------------------- /workshop/static/puppet_codepipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/puppet_codepipeline.png -------------------------------------------------------------------------------- /workshop/static/puppet_s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/puppet_s3.png -------------------------------------------------------------------------------- /workshop/static/sc_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/sc_factory.png -------------------------------------------------------------------------------- /workshop/static/sc_factory.pngold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/sc_factory.pngold -------------------------------------------------------------------------------- /workshop/static/sc_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/sc_puppet.png -------------------------------------------------------------------------------- /workshop/static/sc_puppet.png.old: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/sc_puppet.png.old -------------------------------------------------------------------------------- /workshop/static/select_cloudformation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/select_cloudformation.png -------------------------------------------------------------------------------- /workshop/static/select_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/select_next.png -------------------------------------------------------------------------------- /workshop/static/specify_stack_details_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/specify_stack_details_puppet.png -------------------------------------------------------------------------------- /workshop/static/specify_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/specify_template.png -------------------------------------------------------------------------------- /workshop/static/specify_template.pngold: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/specify_template.pngold -------------------------------------------------------------------------------- /workshop/static/specify_template_puppet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/specify_template_puppet.png -------------------------------------------------------------------------------- /workshop/static/stack_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/stack_details.png -------------------------------------------------------------------------------- /workshop/static/stack_details_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/stack_details_factory.png -------------------------------------------------------------------------------- /workshop/static/start_factory_codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/start_factory_codebuild.png -------------------------------------------------------------------------------- /workshop/static/start_puppet_codebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/start_puppet_codebuild.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickAwsConfigS3BucketServerSideEncryptionEnabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickAwsConfigS3BucketServerSideEncryptionEnabled.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickAwsConfigS3BucketServerSideEncryptionEnabledV1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickAwsConfigS3BucketServerSideEncryptionEnabledV1.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickCreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickCreate.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickEdit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickEdit.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickEditPuppetRepo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickEditPuppetRepo.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickOnPortfolios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickOnPortfolios.png -------------------------------------------------------------------------------- /workshop/static/tasks/ClickOnreinvent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/ClickOnreinvent.png -------------------------------------------------------------------------------- /workshop/static/tasks/CommitChanges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/CommitChanges.png -------------------------------------------------------------------------------- /workshop/static/tasks/CreateRepository.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/CreateRepository.png -------------------------------------------------------------------------------- /workshop/static/tasks/FailedCFNNag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/FailedCFNNag.png -------------------------------------------------------------------------------- /workshop/static/tasks/FilterByAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/FilterByAccount.png -------------------------------------------------------------------------------- /workshop/static/tasks/FindMyAccountNumber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/FindMyAccountNumber.png -------------------------------------------------------------------------------- /workshop/static/tasks/InputTheName.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/InputTheName.png -------------------------------------------------------------------------------- /workshop/static/tasks/PassedCFNNag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/PassedCFNNag.png -------------------------------------------------------------------------------- /workshop/static/tasks/PortfolioReinventCloudEngineeringGovernance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/PortfolioReinventCloudEngineeringGovernance.png -------------------------------------------------------------------------------- /workshop/static/tasks/SeeYourPortfolio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/SeeYourPortfolio.png -------------------------------------------------------------------------------- /workshop/static/tasks/SeeYourTask1Product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/SeeYourTask1Product.png -------------------------------------------------------------------------------- /workshop/static/tasks/SeeYourTask1ProductVersion1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/SeeYourTask1ProductVersion1.png -------------------------------------------------------------------------------- /workshop/static/tasks/SuccessfulFactoryProductRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/SuccessfulFactoryProductRun.png -------------------------------------------------------------------------------- /workshop/static/tasks/SuccessfulFactoryRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/SuccessfulFactoryRun.png -------------------------------------------------------------------------------- /workshop/static/tasks/SuccessfulPuppetRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/SuccessfulPuppetRun.png -------------------------------------------------------------------------------- /workshop/static/tasks/aws-config-rule-enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/aws-config-rule-enabled.png -------------------------------------------------------------------------------- /workshop/static/tasks/create_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/tasks/create_file.png -------------------------------------------------------------------------------- /workshop/static/template_version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/template_version.png -------------------------------------------------------------------------------- /workshop/static/verify_codecommit_factory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/static/verify_codecommit_factory.png -------------------------------------------------------------------------------- /workshop/themes/learn/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | public/ 3 | exampleSite/public 4 | -------------------------------------------------------------------------------- /workshop/themes/learn/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Grav 4 | Copyright (c) 2016 MATHIEU CORNIC 5 | Copyright (c) 2017 Valere JEANTET 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of 8 | this software and associated documentation files (the "Software"), to deal in 9 | the Software without restriction, including without limitation the rights to 10 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 11 | the Software, and to permit persons to whom the Software is furnished to do so, 12 | subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 19 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 20 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 21 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /workshop/themes/learn/archetypes/chapter.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "{{ replace .Name "-" " " | title }}" 3 | date = {{ .Date }} 4 | weight = 5 5 | chapter = true 6 | pre = "X. " 7 | +++ 8 | 9 | ### Chapter X 10 | 11 | # Some Chapter title 12 | 13 | Lorem Ipsum. -------------------------------------------------------------------------------- /workshop/themes/learn/archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "{{ replace .Name "-" " " | title }}" 3 | date = {{ .Date }} 4 | weight = 5 5 | +++ 6 | 7 | Lorem Ipsum. -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 MATHIEU CORNIC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Basics 3 | weight: 5 4 | pre: "1. " 5 | chapter: true 6 | --- 7 | 8 | ### Chapter 1 9 | 10 | # Basics 11 | 12 | Discover what this Hugo theme is all about and the core-concepts behind it. 13 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/_index.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Démarrage 3 | weight: 5 4 | pre: "1. " 5 | chapter: true 6 | --- 7 | 8 | ### Chapitre 1 9 | 10 | # Démarrage 11 | 12 | Découvrez comment utiliser ce thème Hugo et apprenez-en les concepts 13 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/installation/images/chapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/basics/installation/images/chapter.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/requirements/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Requirements 3 | weight: 10 4 | disableToc: true 5 | --- 6 | 7 | Thanks to the simplicity of Hugo, this page is as empty as this theme needs requirements. 8 | 9 | Just download latest version of [Hugo binary (> 0.25)](https://gohugo.io/getting-started/installing/) for your OS (Windows, Linux, Mac) : it's that simple. 10 | 11 | ![Magic](/en/basics/requirements/images/magic.gif?classes=shadow) 12 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/requirements/_index.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Prérequis 3 | weight: 10 4 | disableToc: true 5 | --- 6 | 7 | Grâce à la simplicité d'Hugo, cette page est vide car il n'y a quasi pas de prérequis pour utiliser le thème. 8 | 9 | Téléchargez la dernière version du [binaire Hugo (> 0.25)](https://gohugo.io/getting-started/installing/) pour votre Système d'exploitation (Windows, Linux, Mac) : et c'est tout ! 10 | 11 | ![Magic](/en/basics/requirements/images/magic.gif?classes=shadow) 12 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/requirements/images/magic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/basics/requirements/images/magic.gif -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/style-customization/images/blue-variant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/basics/style-customization/images/blue-variant.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/style-customization/images/green-variant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/basics/style-customization/images/green-variant.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/basics/style-customization/images/red-variant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/basics/style-customization/images/red-variant.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Content 3 | weight: 10 4 | chapter: true 5 | pre: "2. " 6 | --- 7 | 8 | ### Chapter 2 9 | 10 | # Content 11 | 12 | Find out how to create and organize your content quickly and intuitively. 13 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/_index.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Contenu 3 | weight: 10 4 | chapter: true 5 | pre: "2. " 6 | --- 7 | 8 | ### Chapitre 2 9 | 10 | # Contenu 11 | 12 | Découvrez comment créer et organiser votre contenu facilement et intuitivement. 13 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/archetypes.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Archetypes 3 | weight: 10 4 | --- 5 | 6 | Using the command: `hugo new [relative new content path]`, you can start a content file with the date and title automatically set. While this is a welcome feature, active writers need more : [archetypes](https://gohugo.io/content/archetypes/). 7 | 8 | It is pre-configured skeleton pages with default front matter. Please refer to the documentation for types of page to understand the differences. 9 | 10 | ## Chapter {#archetypes-chapter} 11 | 12 | To create a Chapter page, run the following commands 13 | 14 | ``` 15 | hugo new --kind chapter /_index.md 16 | ``` 17 | 18 | It will create a page with predefined Front-Matter: 19 | 20 | ```markdown 21 | +++ 22 | title = "{{ replace .Name "-" " " | title }}" 23 | date = {{ .Date }} 24 | weight = 5 25 | chapter = true 26 | pre = "X. " 27 | +++ 28 | 29 | ### Chapter X 30 | 31 | # Some Chapter title 32 | 33 | Lorem Ipsum. 34 | ``` 35 | 36 | ## Default 37 | 38 | To create a default page, run either one of the following commands 39 | 40 | ``` 41 | # Either 42 | hugo new //_index.md 43 | # Or 44 | hugo new /.md 45 | ``` 46 | 47 | It will create a page with predefined Front-Matter: 48 | 49 | ```markdown 50 | +++ 51 | title = "{{ replace .Name "-" " " | title }}" 52 | date = {{ .Date }} 53 | weight = 5 54 | +++ 55 | 56 | Lorem Ipsum. 57 | ``` -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/archetypes.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Archétypes 3 | weight: 10 4 | --- 5 | 6 | En utilisant la commande: `hugo new [chemin vers nouveau contenu]`, vous pouvez créer un nouveau fichier avec la date et le title automatiquement initialisé. Même si c'est une fonctionnalité intéressante, elle reste limitée pour les auteurs actifs qui ont besoin de mieux : les [archetypes](https://gohugo.io/content/archetypes/). 7 | 8 | Les archétypes sont des squelettes de pages préconfigurées avec un Front Matter par défaut. Merci de vous référer à la documentation pour connaitre les différents types de page. 9 | 10 | ## Chapitre {#archetypes-chapter} 11 | 12 | Pour créer un chapitre, lancez les commandes suivantes 13 | 14 | ``` 15 | hugo new --kind chapter /_index.md 16 | ``` 17 | 18 | Cela crééra une page avec le Front Matter suivant: 19 | 20 | ```markdown 21 | +++ 22 | title = "{{ replace .Name "-" " " | title }}" 23 | date = {{ .Date }} 24 | weight = 5 25 | chapter = true 26 | pre = "X. " 27 | +++ 28 | 29 | ### Chapter X 30 | 31 | # Some Chapter title 32 | 33 | Lorem Ipsum. 34 | ``` 35 | 36 | ## Défaut 37 | 38 | Pour créer une page classique, lancer l'une des deux commandes suivantes 39 | 40 | ``` 41 | # Soit 42 | hugo new //_index.md 43 | # Ou 44 | hugo new /.md 45 | ``` 46 | 47 | Cela crééra une page avec le Front Matter suivant: 48 | 49 | ```markdown 50 | +++ 51 | title = "{{ replace .Name "-" " " | title }}" 52 | date = {{ .Date }} 53 | weight = 5 54 | +++ 55 | 56 | Lorem Ipsum. 57 | ``` -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/i18n/images/i18n-menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/cont/i18n/images/i18n-menu.gif -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/icons.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Icons and logos 3 | weight: 27 4 | --- 5 | 6 | The Learn theme for Hugo loads the [**Font Awesome**](https://fontawesome.com) library, allowing you to easily display any icon or logo available in the Font Awesome free collection. 7 | 8 | ## Finding an icon 9 | 10 | Browse through the available icons in the [Font Awesome Gallery](https://fontawesome.com/icons?d=gallery&m=free). Notice that the **free** filter is enabled, as only the free icons are available by default. 11 | 12 | Once on the Font Awesome page for a specific icon, for example the page for the [heart](https://fontawesome.com/icons/heart?style=solid), copy the HTML reference and paste into the markdown content. 13 | 14 | The HTML to include the heart icon is: 15 | 16 | ``` 17 | 18 | ``` 19 | 20 | ## Including in markdown 21 | 22 | Paste the `` HTML into markup and Font Awesome will load the relevant icon. 23 | 24 | ``` 25 | Built with from Grav and Hugo 26 | ``` 27 | 28 | Which appears as 29 | 30 | Built with from Grav and Hugo 31 | 32 | ## Customising icons 33 | 34 | Font Awesome provides many ways to modify the icon 35 | 36 | * Change colour (by default the icon will inherit the parent colour) 37 | * Increase or decrease size 38 | * Rotate 39 | * Combine with other icons 40 | 41 | Check the full documentation on [web fonts with CSS](https://fontawesome.com/how-to-use/web-fonts-with-css) for more. 42 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/pages/images/frontmatter-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/cont/pages/images/frontmatter-icon.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/pages/images/pages-chapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-chapter.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/pages/images/pages-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/cont/pages/images/pages-default.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/tags.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-11-29T08:41:44+01:00 3 | title: Tags 4 | weight: 40 5 | tags: ["documentation", "tutorial"] 6 | --- 7 | 8 | *Learn theme* support one default taxonomy of gohugo: the *tag* feature. 9 | 10 | ## Configuration 11 | 12 | Just add tags to any page: 13 | 14 | ```markdown 15 | --- 16 | date: 2018-11-29T08:41:44+01:00 17 | title: Theme tutorial 18 | weight: 15 19 | tags: ["tutorial", "theme"] 20 | --- 21 | ``` 22 | 23 | ## Behavior 24 | 25 | 26 | The tags are displayed at the top of the page, in their insertion order. 27 | 28 | Each tag is a link to a *Taxonomy* page displaying all the articles with the given tag. 29 | 30 | ## List all the tags 31 | 32 | In the `config.toml` file you can add a shortcut to display all the tags 33 | 34 | ```toml 35 | [[menu.shortcuts]] 36 | name = " Tags" 37 | url = "/tags" 38 | weight = 30 39 | ``` -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/cont/tags.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-11-29T08:41:44+01:00 3 | title: Tags 4 | weight: 40 5 | tags: ["documentation", "tutorial"] 6 | --- 7 | 8 | 9 | Le *thème Learn* supporte une des taxonomy par défaut de GoHugo : les tags. 10 | 11 | ## Configuration 12 | 13 | Il suffit d'ajouter un tableau de tags sur la page : 14 | 15 | ```markdown 16 | --- 17 | date: 2018-11-29T08:41:44+01:00 18 | title: Tutoriel pour le thème 19 | weight: 15 20 | tags: ["tutoriel", "theme"] 21 | --- 22 | ``` 23 | 24 | ## Comportement 25 | 26 | Les tags sont affichés en haut de la page, dans l'ordre dans lequel ils ont été saisis. 27 | 28 | Chaque tag est un lien vers une page *Taxonomy*, qui affiche tous les article avec ce tag. 29 | 30 | 31 | ## Liste des tags 32 | 33 | Il est possible de rajouter un raccourci dans le fichier `config.toml` afin d'afficher une page listant tous les tags 34 | 35 | ```toml 36 | [[menu.shortcuts]] 37 | name = " Tags" 38 | url = "/tags" 39 | weight = 30 40 | ``` -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/credits.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Credits 3 | disableToc: true 4 | --- 5 | 6 | ## Contributors 7 | 8 | Thanks to them for making Open Source Software a better place ! 9 | 10 | {{% ghcontributors "https://api.github.com/repos/matcornic/hugo-theme-learn/contributors?per_page=100" %}} 11 | 12 | And a special thanks to [@vjeantet](https://github.com/vjeantet) for his work on [docdock](https://github.com/vjeantet/hugo-theme-docdock), a fork of hugo-theme-learn. v2.0.0 of this theme is inspired by his work. 13 | 14 | ## Packages and libraries 15 | * [mermaid](https://knsv.github.io/mermaid) - generation of diagram and flowchart from text in a similar manner as markdown 16 | * [font awesome](http://fontawesome.io/) - the iconic font and CSS framework 17 | * [jQuery](https://jquery.com) - The Write Less, Do More, JavaScript Library 18 | * [lunr](https://lunrjs.com) - Lunr enables you to provide a great search experience without the need for external, server-side, search services... 19 | * [horsey](https://bevacqua.github.io/horsey/) - Progressive and customizable autocomplete component 20 | * [clipboard.js](https://zenorocha.github.io/clipboard.js) - copy text to clipboard 21 | * [highlight.js](https://highlightjs.org) - Javascript syntax highlighter 22 | * [modernizr](https://modernizr.com) - A JavaScript toolkit that allows web developers to use new CSS3 and HTML5 features while maintaining a fine level of control over browsers that don't support 23 | 24 | ## Tooling 25 | 26 | * [Netlify](https://www.netlify.com) - Continuous deployement and hosting of this documentation 27 | * [Hugo](https://gohugo.io/) 28 | 29 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/credits.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Crédits 3 | disableToc: true 4 | --- 5 | 6 | ## Contributeurs 7 | 8 | Merci à eux de rendre le monde Open Source meilleur ! 9 | 10 | {{% ghcontributors "https://api.github.com/repos/matcornic/hugo-theme-learn/contributors?per_page=100" %}} 11 | 12 | Et un grand merci à [@vjeantet](https://github.com/vjeantet) pour son travail sur [docdock](https://github.com/vjeantet/hugo-theme-docdock), un fork de _hugo-theme-learn_. La v2.0.0 du thème est en grande partie inspirée de son travail. 13 | 14 | ## Packages et librairies 15 | * [mermaid](https://knsv.github.io/mermaid) - géneration de diagrames et graphiques à partir de texte similaire à Markdown 16 | * [font awesome](http://fontawesome.io/) - Le framework de polices iconiques 17 | * [jQuery](https://jquery.com) - La plus connue des librairies Javascript 18 | * [lunr](https://lunrjs.com) - Lunr fournit des fonctions de recherche sans service externe 19 | * [horsey](https://bevacqua.github.io/horsey/) - Autocomplétion de composants (utiliser pour les suggestions de recherche) 20 | * [clipboard.js](https://zenorocha.github.io/clipboard.js) - Copier le texte dans le presse-papier 21 | * [highlight.js](https://highlightjs.org) - Mise en valeur de syntaxes 22 | * [modernizr](https://modernizr.com) - Une boite à outil Javascript qui permet aux développeurs d'utiliser les dernières fonctionnalités de CSS et HTML5, même sur de vieux navigateurs. 23 | 24 | ## Outils 25 | 26 | * [Netlify](https://www.netlify.com) - Déploiement continue et hébergement de cette documentation 27 | * [Hugo](https://gohugo.io/) 28 | 29 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-04-09T16:50:16+02:00 3 | title: Shortcodes 4 | pre: "3. " 5 | weight: 15 6 | --- 7 | 8 | Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesn’t support well. You could use pure HTML to expand possibilities. 9 | 10 | But this happens to be a bad idea. Everyone uses Markdown because it's pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible. 11 | 12 | To avoid this limitations, Hugo created [shortcodes](https://gohugo.io/extras/shortcodes/). A shortcode is a simple snippet inside a page. 13 | 14 | **Hugo-theme-learn** provides multiple shortcodes on top of existing ones. 15 | 16 | {{%children style="h2" description="true" %}} 17 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/_index.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-04-09T16:50:16+02:00 3 | title: Shortcodes 4 | pre: "3. " 5 | weight: 15 6 | --- 7 | 8 | Hugo utilise Markdown pour son format simple. Cependant, il y a beaucoup de chose que Markdown ne supporte pas bien. On pourrait utiliser du HTML pur pour améliorer les capacité du Markdown. 9 | 10 | Mais c'est probablement une mauvaise idée. Tout le monde utilise le Markdown parce que c'est pur et simple à lire même lorsqu'il est affiché en texte brut. Vous devez éviter le HTML autant que possible pour garder le contenu simple. 11 | 12 | Cependant, pour éviter les limitations, Hugo a créé les [shortcodes](https://gohugo.io/extras/shortcodes/). Un shortcode est un bout de code (*snippet*) dans une page. 13 | 14 | **Hugo-theme-learn** fournit de multiple shortcodes en plus de ceux existant. 15 | 16 | {{%children style="h2" description="true" %}} 17 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/BachGavotteShort.mp3 -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/Carroll_AliceAuPaysDesMerveilles.pdf -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/adivorciarsetoca00cape.pdf -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/hugo.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.en.files/movieselectricsheep-flock-244-32500-2.mp4 -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/BachGavotteShort.mp3 -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/Carroll_AliceAuPaysDesMerveilles.pdf -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/adivorciarsetoca00cape.pdf -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/hugo.png -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/content/shortcodes/attachments.fr.files/movieselectricsheep-flock-244-32500-2.mp4 -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/button.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Button 3 | description : "Nice buttons on your page." 4 | --- 5 | 6 | A button is a just a clickable button with optional icon. 7 | 8 | ``` 9 | {{%/* button href="https://getgrav.org/" */%}}Get Grav{{%/* /button */%}} 10 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" */%}}Get Grav with icon{{%/* /button */%}} 11 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" */%}}Get Grav with icon right{{%/* /button */%}} 12 | ``` 13 | 14 | {{% button href="https://getgrav.org/" %}}Get Grav{{% /button %}} 15 | {{% button href="https://getgrav.org/" icon="fas fa-download" %}}Get Grav with icon{{% /button %}} 16 | {{% button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" %}}Get Grav with icon right{{% /button %}} 17 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/button.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Button (Bouton) 3 | description : "De beaux boutons sur votre page." 4 | --- 5 | 6 | Le shortcode *button* est simplement un bouton cliquable avec une icône optionnelle. 7 | 8 | ``` 9 | {{%/* button href="https://getgrav.org/" */%}}Téléchargez Grav{{%/* /button */%}} 10 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" */%}}Téléchargez Grav avec icône{{%/* /button */%}} 11 | {{%/* button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" */%}}Téléchargez Grav avec icône à droite{{%/* /button */%}} 12 | ``` 13 | 14 | {{% button href="https://getgrav.org/" %}}Téléchargez Grav{{% /button %}} 15 | {{% button href="https://getgrav.org/" icon="fas fa-download" %}}Téléchargez Grav avec icône{{% /button %}} 16 | {{% button href="https://getgrav.org/" icon="fas fa-download" icon-position="right" %}}Téléchargez Grav avec icône à droite{{% /button %}} 17 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1-1" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1-1-1" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-1/children-1-1/children-1-1-1/children-1-1-1-1/children-1-1-1-1-1/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 1-1-1-1-1" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 2" 3 | description = "" 4 | +++ 5 | 6 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 7 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 8 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 9 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 10 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 11 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 2" 3 | description = "" 4 | +++ 5 | 6 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 7 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 8 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 9 | consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 10 | cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 11 | proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page test 3" 3 | description = "This is a page test" 4 | +++ 5 | 6 | This is a test 3 demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-2/test3.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page test 3" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo test 3 -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 3" 3 | description = "This is a demo child page" 4 | +++ 5 | 6 | This is a demo child page, not displayed in the menu -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-3/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 3" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 4" 3 | description = "This is a demo child page" 4 | hidden = true 5 | +++ 6 | 7 | This is a demo child page, not displayed in the menu -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/children-4/_index.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page 4" 3 | description = "Ceci est une page test" 4 | hidden = true 5 | +++ 6 | 7 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/test.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page test" 3 | description = "This is a page test" 4 | +++ 5 | 6 | This is a test demo child page -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/children/test.fr.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "page test" 3 | description = "Ceci est une page test" 4 | +++ 5 | 6 | Ceci est une page de demo -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/notice.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Notice 3 | description : "Disclaimers to help you structure your page" 4 | --- 5 | 6 | The notice shortcode shows 4 types of disclaimers to help you structure your page. 7 | 8 | ### Note 9 | 10 | ``` 11 | {{%/* notice note */%}} 12 | A notice disclaimer 13 | {{%/* /notice */%}} 14 | ``` 15 | 16 | renders as 17 | 18 | {{% notice note %}} 19 | A notice disclaimer 20 | {{% /notice %}} 21 | 22 | ### Info 23 | 24 | ``` 25 | {{%/* notice info */%}} 26 | An information disclaimer 27 | {{%/* /notice */%}} 28 | ``` 29 | 30 | renders as 31 | 32 | {{% notice info %}} 33 | An information disclaimer 34 | {{% /notice %}} 35 | 36 | ### Tip 37 | 38 | ``` 39 | {{%/* notice tip */%}} 40 | A tip disclaimer 41 | {{%/* /notice */%}} 42 | ``` 43 | 44 | renders as 45 | 46 | {{% notice tip %}} 47 | A tip disclaimer 48 | {{% /notice %}} 49 | 50 | ### Warning 51 | 52 | ``` 53 | {{%/* notice warning */%}} 54 | An warning disclaimer 55 | {{%/* /notice */%}} 56 | ``` 57 | 58 | renders as 59 | 60 | {{% notice warning %}} 61 | A warning disclaimer 62 | {{% /notice %}} -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/notice.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Notice 3 | description : "Message pour vous aider à structurer votre contenu" 4 | --- 5 | 6 | Le shortcode *Notice* permet d'afficher 4 types de message pour vous aider à structurer votre contenu. 7 | 8 | ### Note 9 | 10 | ``` 11 | {{%/* notice note */%}} 12 | Une notice de type *note* 13 | {{%/* /notice */%}} 14 | ``` 15 | 16 | s'affiche comme 17 | 18 | {{% notice note %}} 19 | Une notice de type *note* 20 | {{% /notice %}} 21 | 22 | ### Info 23 | 24 | ``` 25 | {{%/* notice info */%}} 26 | Une notice de type *info* 27 | {{%/* /notice */%}} 28 | ``` 29 | 30 | s'affiche comme 31 | 32 | {{% notice info %}} 33 | Une notice de type *info* 34 | {{% /notice %}} 35 | 36 | ### Tip 37 | 38 | ``` 39 | {{%/* notice tip */%}} 40 | Une notice de type *tip* 41 | {{%/* /notice */%}} 42 | ``` 43 | 44 | s'affiche comme 45 | 46 | {{% notice tip %}} 47 | Une notice de type *tip* 48 | {{% /notice %}} 49 | 50 | ### Warning 51 | 52 | ``` 53 | {{%/* notice warning */%}} 54 | Une notice de type *warning* 55 | {{%/* /notice */%}} 56 | ``` 57 | 58 | s'affiche comme 59 | 60 | {{% notice warning %}} 61 | Une notice de type *warning* 62 | {{% /notice %}} -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/siteparam.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Site param 3 | description : "Get value of site params variables in your page." 4 | --- 5 | 6 | `siteparam` shortcode is used to help you print values of site params. 7 | 8 | For instance, in this current site, the `editURL` variable is used in `config.toml` 9 | 10 | ```toml 11 | [params] 12 | editURL = "https://github.com/matcornic/hugo-theme-learn/edit/master/exampleSite/content/" 13 | ``` 14 | 15 | Use the `siteparam` shortcode to display its value. 16 | 17 | ``` 18 | `editURL` Value : {{%/* siteparam "editURL" */%}} 19 | ``` 20 | 21 | is displayed as 22 | 23 | `editURL` Value : {{% siteparam "editURL" %}} -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/shortcodes/siteparam.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Site param 3 | description : "Afficher la valeur d'un paramètre global du site dans votre page" 4 | --- 5 | 6 | Les shortcode `siteparam` est utilisé pour vous aider à afficher des valeurs provenant des paramètres globaux du site. 7 | 8 | Par exemple, dans ce site, le paramètre `editURL` est utilisé dans le fichier `config.toml` 9 | 10 | ```toml 11 | [params] 12 | editURL = "https://github.com/matcornic/hugo-theme-learn/edit/master/exampleSite/content/" 13 | ``` 14 | 15 | Utilisez le shortcode `siteparam` pour affichier sa valeur. 16 | 17 | ``` 18 | Valeur de `editURL` : {{%/* siteparam "editURL" */%}} 19 | ``` 20 | 21 | s'affiche comme 22 | 23 | Valeur de `editURL` : {{% siteparam "editURL" %}} -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/showcase.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Showcase 3 | disableToc: true 4 | --- 5 | 6 | #### [TAT](https://ovh.github.io/tat/overview/) by OVH 7 | ![TAT image](/images/showcase/tat.png?width=50pc) 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/content/showcase.fr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Vitrine 3 | disableToc: true 4 | slug: vitrine 5 | --- 6 | 7 | #### [TAT](https://ovh.github.io/tat/overview/) par OVH 8 | ![TAT image](/images/showcase/tat.png?width=50pc) 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/layouts/partials/custom-footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/layouts/partials/menu-footer.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Download 4 | 5 | 6 | Star 7 | 8 | 9 | Fork 10 | 11 |

Built with from Grav and Hugo

12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/layouts/shortcodes/ghcontributors.html: -------------------------------------------------------------------------------- 1 | 22 |
23 | {{ $url := .Get 0 }} 24 | {{ range getJSON $url }} 25 |
26 | 27 | 28 | {{.contributions}} commits 29 |
30 | {{ end }} 31 |
-------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.eot -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.woff -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/static/fonts/monogramos-webfont.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/exampleSite/static/images/showcase/tat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/exampleSite/static/images/showcase/tat.png -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/en.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Search..." 3 | 4 | [Clear-History] 5 | other = "Clear History" 6 | 7 | [Attachments-label] 8 | other = "Attachments" 9 | 10 | [title-404] 11 | other = "Error" 12 | 13 | [message-404] 14 | other = "Woops. Looks like this page doesn't exist ¯\\_(ツ)_/¯." 15 | 16 | [Go-to-homepage] 17 | other = "Go to homepage" 18 | 19 | [Edit-this-page] 20 | other = "Edit this page" 21 | 22 | [Shortcuts-Title] 23 | other = "More" 24 | 25 | [Expand-title] 26 | other = "Expand me..." -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/es.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Buscar..." 3 | 4 | [Clear-History] 5 | other = "Borrar Historial" 6 | 7 | [Attachments-label] 8 | other = "Adjuntos" 9 | 10 | [title-404] 11 | other = "Error" 12 | 13 | [message-404] 14 | other = "Ups. Parece que la página no existe ¯\\_(ツ)_/¯." 15 | 16 | [Go-to-homepage] 17 | other = "Ir al inicio" 18 | 19 | [Edit-this-page] 20 | other = "Editar esta página" 21 | 22 | [Shortcuts-Title] 23 | other = "Más" 24 | 25 | [Expand-title] 26 | other = "Expandir..." 27 | -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/fr.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Rechercher..." 3 | 4 | [Clear-History] 5 | other = "Supprimer l'historique" 6 | 7 | [Attachments-label] 8 | other = "Pièces jointes" 9 | 10 | [title-404] 11 | other = "Erreur" 12 | 13 | [message-404] 14 | other = "Oups. On dirait que cette page n'existe pas ¯\\_(ツ)_/¯" 15 | 16 | [Go-to-homepage] 17 | other = "Vers la page d'accueil" 18 | 19 | [Edit-this-page] 20 | other = "Modifier la page" 21 | 22 | [Shortcuts-Title] 23 | other = "Aller plus loin" 24 | 25 | [Expand-title] 26 | other = "Déroulez-moi..." -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/id.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Telusuri..." 3 | 4 | [Clear-History] 5 | other = "Bersihkan Riwayat" 6 | 7 | [Attachments-label] 8 | other = "Lampiran" 9 | 10 | [title-404] 11 | other = "Kesalahan" 12 | 13 | [message-404] 14 | other = "Oops. Sepertinya halaman ini tidak ada ¯\\_(ツ)_/¯." 15 | 16 | [Go-to-homepage] 17 | other = "Ke halaman depan" 18 | 19 | [Edit-this-page] 20 | other = "Edit halaman ini" 21 | 22 | [Shortcuts-Title] 23 | other = "Lainnya" 24 | 25 | [Expand-title] 26 | other = "Bentangkan..." 27 | -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/nl.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Zoeken..." 3 | 4 | [Clear-History] 5 | other = "Wis geschiedenis" 6 | 7 | [Attachments-label] 8 | other = "Bijlagen" 9 | 10 | [title-404] 11 | other = "Error" 12 | 13 | [message-404] 14 | other = "Blijkbaar bestaat deze pagina niet ¯\\_(ツ)_/¯." 15 | 16 | [Go-to-homepage] 17 | other = "Naar startpagina" 18 | 19 | [Edit-this-page] 20 | other = "Deze pagina bewerken" 21 | 22 | [Shortcuts-Title] 23 | other = "Snelkoppelingen" 24 | 25 | [Expand-title] 26 | other = "Lees meer..." 27 | -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/pt.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Procurar..." 3 | 4 | [Clear-History] 5 | other = "Limpar Histórico" 6 | 7 | [Attachments-label] 8 | other = "Anexos" 9 | 10 | [title-404] 11 | other = "Erro" 12 | 13 | [message-404] 14 | other = "Ops. Parece que a página não existe ¯\\_(ツ)_/¯." 15 | 16 | [Go-to-homepage] 17 | other = "Ir para o início" 18 | 19 | [Edit-this-page] 20 | other = "Editar esta página" 21 | 22 | [Shortcuts-Title] 23 | other = "Mais" 24 | 25 | [Expand-title] 26 | other = "Expandir..." 27 | -------------------------------------------------------------------------------- /workshop/themes/learn/i18n/tr.toml: -------------------------------------------------------------------------------- 1 | [Search-placeholder] 2 | other = "Ara..." 3 | 4 | [Clear-History] 5 | other = "Geçmişi Temizle" 6 | 7 | [Attachments-label] 8 | other = "Ekler" 9 | 10 | [title-404] 11 | other = "Hata" 12 | 13 | [message-404] 14 | other = "Uups. Görünüşe göre böyle bir sayfa yok ¯\\_(ツ)_/¯" 15 | 16 | [Go-to-homepage] 17 | other = "Anasayfaya dön" 18 | 19 | [Edit-this-page] 20 | other = "Sayfayı düzenle" 21 | 22 | [Shortcuts-Title] 23 | other = "Dahası Var" 24 | 25 | [Expand-title] 26 | other = "Genişlet..." 27 | -------------------------------------------------------------------------------- /workshop/themes/learn/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/images/screenshot.png -------------------------------------------------------------------------------- /workshop/themes/learn/images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/images/tn.png -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ partial "header.html" . }} 2 | 3 | {{ if eq .Kind "section" }} 4 | {{ .Content }} 5 | {{end}} 6 | 7 | {{ if or (eq .Kind "taxonomy") (eq .Kind "taxonomyTerm") }} 8 |
    9 | {{ range .Pages }} 10 |
  • {{.Title}}
  • 11 | {{ end }} 12 |
13 | {{end}} 14 | 15 |
16 | {{with .Params.LastModifierDisplayName}} 17 | {{ . }} {{with $.Date}} {{ .Format "02/01/2006" }}{{end}} 18 | 19 | {{end}} 20 |
21 | 22 | {{ partial "footer.html" . }} -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ partial "header.html" . }} 2 | 3 | {{ .Content }} 4 | 5 |
6 | {{with .Params.LastModifierDisplayName}} 7 | {{ . }} {{with $.Date}} {{ .Format "02/01/2006" }}{{end}} 8 | 9 | {{end}} 10 |
11 | 12 | 13 | {{ partial "footer.html" . }} 14 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ partial "header.html" . }} 2 | 3 | navigation 4 | 5 | 6 | {{if .Site.Home.Content }} 7 | {{.Site.Home.Content}} 8 | {{else}} 9 | {{if eq .Site.Language.Lang "fr"}} 10 |

Personaliser la page d'accueil

11 |

12 | Le site fonctionne. Ne pas oublier de personaliser cette page avec votre propre contenu. 3 manières de faire : 13 |

14 |
    15 |
  • 1. Créer un fichier _index.md dans le dossier content et le remplir de Markdown
  • 16 |
  • 2. Créer un fichier index.html dans le dossier static et le remplir de code HTML
  • 17 |
  • 3. Configurer le serveur http pour rediriger automatiquement la homepage vers la page de votre choix dans le site
  • 18 |
19 | {{else}} 20 |

Customize your own home page

21 |

22 | The site is working. Don't forget to customize this homepage with your own. You typically have 3 choices : 23 |

24 |
    25 |
  • 1. Create an _index.md document in content folder and fill it with Markdown content
  • 26 |
  • 2. Create an index.html file in the static folder and fill the file with HTML content
  • 27 |
  • 3. Configure your server to automatically redirect home page to one your documentation page
  • 28 |
29 | {{end}} 30 | {{ end }} 31 | {{ partial "footer.html" . }} 32 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/index.json: -------------------------------------------------------------------------------- 1 | [{{ range $index, $page := .Site.Pages }} 2 | {{- if ne $page.Type "json" -}} 3 | {{- if and $index (gt $index 0) -}},{{- end }} 4 | { 5 | "uri": "{{ $page.Permalink }}", 6 | "title": "{{ htmlEscape $page.Title}}", 7 | "tags": [{{ range $tindex, $tag := $page.Params.tags }}{{ if $tindex }}, {{ end }}"{{ $tag| htmlEscape }}"{{ end }}], 8 | "description": "{{ htmlEscape .Description}}", 9 | "content": {{$page.Plain | jsonify}} 10 | } 11 | {{- end -}} 12 | {{- end -}}] -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/custom-comments.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/custom-footer.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/custom-header.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/favicon.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/meta.html: -------------------------------------------------------------------------------- 1 | 2 | {{ with .Site.Params.author }}{{ end }} 3 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/search.html: -------------------------------------------------------------------------------- 1 | 6 | {{ $assetBusting := not .Site.Params.disableAssetsBusting }} 7 | 8 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/tags.html: -------------------------------------------------------------------------------- 1 | {{ if .Params.tags }} 2 |
3 | {{range .Params.tags}} 4 | {{ . }} 5 | {{end}} 6 |
7 | {{end}} -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/partials/toc.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ .TableOfContents }} 4 |
5 |
6 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/attachments.html: -------------------------------------------------------------------------------- 1 | {{ $_hugo_config := `{ "version": 1 }` }} 2 |
3 | 7 | {{if eq .Page.File.BaseFileName "index"}} 8 | {{$.Scratch.Add "filesName" "files"}} 9 | {{else}} 10 | {{$.Scratch.Add "filesName" (printf "%s.files" .Page.File.BaseFileName)}} 11 | {{end}} 12 |
13 | {{ range (readDir (printf "./content/%s%s" .Page.File.Dir ($.Scratch.Get "filesName")) ) }} 14 | {{ $fileDir := replace $.Page.File.Dir "\\" "/" }} 15 | {{if ($.Get "pattern")}} 16 | {{if (findRE ($.Get "pattern") .Name)}} 17 |
  • 18 | 19 | {{.Name}} 20 | 21 | ({{div .Size 1024 }} ko) 22 |
  • 23 | {{end}} 24 | {{else}} 25 |
  • 26 | 27 | {{.Name}} 28 | 29 | ({{div .Size 1024 }} ko) 30 |
  • 31 | {{end}} 32 | {{end}} 33 |
    34 | {{.Inner}} 35 |
    36 | 37 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/button.html: -------------------------------------------------------------------------------- 1 | {{ $_hugo_config := `{ "version": 1 }` }} 2 | 3 | {{ $icon := .Get "icon" }} 4 | {{ $iconposition := .Get "icon-position" }} 5 | {{ if ($icon) }} 6 | {{ if or (not ($iconposition)) (eq $iconposition "left") }} 7 | 8 | {{ end }} 9 | {{ end }} 10 | {{ .Inner }} 11 | {{ if and ($icon) (eq $iconposition "right")}} 12 | 13 | {{ end }} 14 | 15 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/code-toggle.html: -------------------------------------------------------------------------------- 1 | {{ $langs := (slice "yaml" "toml" "json") }} 2 |
    3 |
    4 | {{- with .Get "file" -}} 5 |
    {{ . }}.
    6 | {{- end -}} 7 | {{ range $langs }} 8 |   9 | {{ end }} 10 |
    11 |
    12 | {{ range $langs }} 13 |
    14 | {{ highlight ($.Inner | transform.Remarshal . | safeHTML) . ""}} 15 |
    16 | {{ if ne ($.Get "copy") "false" }} 17 | 19 | {{/* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}} 20 | {{end}} 21 | {{ end }} 22 |
    23 | 24 |
    25 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/expand.html: -------------------------------------------------------------------------------- 1 | {{ $_hugo_config := `{ "version": 1 }` }} 2 |
    3 |
    4 | 5 | 6 | {{$expandMessage := T "Expand-title"}} 7 | {{ if .IsNamedParams }} 8 | {{.Get "default" | default $expandMessage}} 9 | {{else}} 10 | {{.Get 0 | default $expandMessage}} 11 | {{end}} 12 | 13 |
    14 | 17 |
    -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | {{ $_hugo_config := `{ "version": 1 }` }} 2 |
    {{ safeHTML .Inner }}
    3 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/my-code-toggle.html: -------------------------------------------------------------------------------- 1 | {{ $langs := (slice "ts" "java" "py") }} 2 |
    3 |
    4 | {{- with .Get "file" -}} 5 |
    {{ . }}.
    6 | {{- end -}} 7 | {{ range $langs }} 8 |   9 | {{ end }} 10 |
    11 |
    12 | {{ range $langs }} 13 |
    14 | {{ highlight ($.Inner | safeHTML) . ""}} 15 |
    16 | {{ if ne ($.Get "copy") "false" }} 17 | 19 | {{/* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}} 20 | {{end}} 21 | {{ end }} 22 |
    23 | 24 |
    25 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/notice.html: -------------------------------------------------------------------------------- 1 | {{ $_hugo_config := `{ "version": 1 }` }} 2 |
    {{ .Inner }}
    3 | -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/ref.html: -------------------------------------------------------------------------------- 1 | {{- if in (.Get 0) "/_index.md" -}} 2 | {{- $paths := (split (.Get 0) "_index.md") -}} 3 | {{- $pagepath := index $paths 0 -}} 4 | {{- $anchor := index $paths 1 -}} 5 | {{- with .Site.GetPage "section" (trim $pagepath "/") -}} 6 | {{- ( printf "%s%s" $pagepath $anchor ) | relLangURL -}} 7 | {{- end -}} 8 | {{- else -}} 9 | {{- with .Site.GetPage "section" (.Get 0) }} 10 | {{- .URL -}} 11 | {{- else -}} 12 | {{- .Get 0 | relref .Page -}} 13 | {{- end -}} 14 | {{- end -}} -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/relref.html: -------------------------------------------------------------------------------- 1 | {{- if in (.Get 0) "/_index.md" -}} 2 | {{- $paths := (split (.Get 0) "_index.md") -}} 3 | {{- $pagepath := index $paths 0 -}} 4 | {{- $anchor := index $paths 1 -}} 5 | {{- with .Site.GetPage "section" (trim $pagepath "/") -}} 6 | {{- ( printf "%s%s" $pagepath $anchor ) | relLangURL -}} 7 | {{- end -}} 8 | {{- else -}} 9 | {{- with .Site.GetPage "section" (.Get 0) }} 10 | {{- .URL -}} 11 | {{- else -}} 12 | {{- .Get 0 | relref .Page -}} 13 | {{- end -}} 14 | {{- end -}} -------------------------------------------------------------------------------- /workshop/themes/learn/layouts/shortcodes/siteparam.html: -------------------------------------------------------------------------------- 1 | {{- $paramName := (.Get 0) -}} 2 | {{- $siteParams := .Site.Params -}} 3 | {{- with $paramName -}} 4 | {{- with $siteParams -}} 5 | {{- index . (lower $paramName) -}} 6 | {{- end -}} 7 | {{- end -}} -------------------------------------------------------------------------------- /workshop/themes/learn/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "exampleSite/public" 3 | command = "hugo -s exampleSite" 4 | 5 | [build.environment] 6 | HUGO_THEME = "repo" 7 | HUGO_THEMESDIR = "/opt/build" 8 | HUGO_VERSION = "0.55.5" 9 | 10 | [context.production.environment] 11 | HUGO_BASEURL = "https://learn.netlify.com/" 12 | 13 | [context.deploy-preview] 14 | command = "hugo -s exampleSite -b $DEPLOY_PRIME_URL" 15 | 16 | [context.deploy-preview.environment] 17 | HUGO_ENABLEGITINFO = "true" 18 | 19 | [context.branch-deplpy] 20 | command = "hugo -s exampleSite -b $DEPLOY_PRIME_URL" 21 | 22 | [context.branch-deploy.environment] 23 | HUGO_ENABLEGITINFO = "true" 24 | 25 | -------------------------------------------------------------------------------- /workshop/themes/learn/static/css/auto-complete.css: -------------------------------------------------------------------------------- 1 | .autocomplete-suggestions { 2 | text-align: left; 3 | cursor: default; 4 | border: 1px solid #ccc; 5 | border-top: 0; 6 | background: #fff; 7 | box-shadow: -1px 1px 3px rgba(0,0,0,.1); 8 | 9 | /* core styles should not be changed */ 10 | position: absolute; 11 | display: none; 12 | z-index: 9999; 13 | max-height: 254px; 14 | overflow: hidden; 15 | overflow-y: auto; 16 | box-sizing: border-box; 17 | 18 | } 19 | .autocomplete-suggestion { 20 | position: relative; 21 | cursor: pointer; 22 | padding: 7px; 23 | line-height: 23px; 24 | white-space: nowrap; 25 | overflow: hidden; 26 | text-overflow: ellipsis; 27 | color: #333; 28 | } 29 | 30 | .autocomplete-suggestion b { 31 | font-weight: normal; 32 | color: #1f8dd6; 33 | } 34 | 35 | .autocomplete-suggestion.selected { 36 | background: #333; 37 | color: #fff; 38 | } 39 | 40 | .autocomplete-suggestion:hover { 41 | background: #444; 42 | color: #fff; 43 | } 44 | 45 | .autocomplete-suggestion > .context { 46 | font-size: 12px; 47 | } 48 | -------------------------------------------------------------------------------- /workshop/themes/learn/static/css/featherlight.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Featherlight - ultra slim jQuery lightbox 3 | * Version 1.7.13 - http://noelboss.github.io/featherlight/ 4 | * 5 | * Copyright 2018, Noël Raoul Bossart (http://www.noelboss.com) 6 | * MIT Licensed. 7 | **/ 8 | html.with-featherlight{overflow:hidden}.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:rgba(0,0,0,0)}.featherlight:last-of-type{background:rgba(0,0,0,.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:auto;padding:25px 25px 0;border-bottom:25px solid transparent;margin-left:5%;margin-right:5%;max-height:95%;background:#fff;cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight link.featherlight-inner,.featherlight script.featherlight-inner,.featherlight style.featherlight-inner{display:none}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font-family:Arial,sans-serif;background:#fff;background:rgba(255,255,255,.3);color:#000;border:0;padding:0}.featherlight .featherlight-close-icon::-moz-focus-inner{border:0;padding:0}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0;-webkit-overflow-scrolling:touch}.featherlight iframe{border:0}.featherlight *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:1024px){.featherlight .featherlight-content{margin-left:0;margin-right:0;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}}@media print{html.with-featherlight>*>:not(.featherlight){display:none}} -------------------------------------------------------------------------------- /workshop/themes/learn/static/css/tags.css: -------------------------------------------------------------------------------- 1 | /* Tags */ 2 | 3 | #head-tags{ 4 | margin-left:1em; 5 | margin-top:1em; 6 | } 7 | 8 | #body .tags a.tag-link { 9 | display: inline-block; 10 | line-height: 2em; 11 | font-size: 0.8em; 12 | position: relative; 13 | margin: 0 16px 8px 0; 14 | padding: 0 10px 0 12px; 15 | background: #8451a1; 16 | 17 | -webkit-border-bottom-right-radius: 3px; 18 | border-bottom-right-radius: 3px; 19 | -webkit-border-top-right-radius: 3px; 20 | border-top-right-radius: 3px; 21 | 22 | -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.2); 23 | box-shadow: 0 1px 2px rgba(0,0,0,0.2); 24 | color: #fff; 25 | } 26 | 27 | #body .tags a.tag-link:before { 28 | content: ""; 29 | position: absolute; 30 | top:0; 31 | left: -1em; 32 | width: 0; 33 | height: 0; 34 | border-color: transparent #8451a1 transparent transparent; 35 | border-style: solid; 36 | border-width: 1em 1em 1em 0; 37 | } 38 | 39 | #body .tags a.tag-link:after { 40 | content: ""; 41 | position: absolute; 42 | top: 10px; 43 | left: 1px; 44 | width: 5px; 45 | height: 5px; 46 | -webkit-border-radius: 50%; 47 | border-radius: 100%; 48 | background: #fff; 49 | } 50 | -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Inconsolata.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Inconsolata.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Inconsolata.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Inconsolata.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Inconsolata.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Inconsolata.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-Normal-webfont.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Novecentosanswide-UltraLight-webfont.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_200.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_200.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_200.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_200.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_200.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_200.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_200.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_200.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_300.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_300.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_300.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_300.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_300.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_500.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_500.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_500.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_500.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_500.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/Work_Sans_500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/Work_Sans_500.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/images/clippy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /workshop/themes/learn/static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/images/favicon.png -------------------------------------------------------------------------------- /workshop/themes/learn/static/images/gopher-404.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/images/gopher-404.jpg -------------------------------------------------------------------------------- /workshop/themes/learn/static/js/.gitignore: -------------------------------------------------------------------------------- 1 | !*.js 2 | -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /workshop/themes/learn/static/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-service-catalog-tools-workshop/d8942dc97eb529a8e046d9c81a059f5601c30c03/workshop/themes/learn/static/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /workshop/themes/learn/theme.toml: -------------------------------------------------------------------------------- 1 | # theme.toml template for a Hugo theme 2 | # See https://github.com/spf13/hugoThemes#themetoml for an example 3 | 4 | name = "Learn" 5 | license = "MIT" 6 | licenselink = "https://github.com/matcornic/hugo-theme-learn/blob/master/LICENSE.md" 7 | description = "Documentation theme for Hugo, based on Grav Learn theme" 8 | homepage = "https://github.com/matcornic/hugo-theme-learn/" 9 | repo = "https://github.com/matcornic/hugo-theme-learn" 10 | tags = ["documentation", "grav", "learn", "doc", "search"] 11 | features = ["documentation", "menu", "nested sections", "search", "mermaid"] 12 | min_version = 0.25 13 | 14 | [author] 15 | name = "Mathieu Cornic" 16 | homepage = "https://matcornic.github.io/" 17 | 18 | [original] 19 | name = "Grav Learn" 20 | homepage = "https://learn.getgrav.org/" 21 | repo = "https://github.com/getgrav/grav-learn" 22 | -------------------------------------------------------------------------------- /workshop/themes/learn/wercker.yml: -------------------------------------------------------------------------------- 1 | box: golang 2 | build: 3 | steps: 4 | # Gets the dependencies 5 | - script: 6 | name: get hugo 7 | code: | 8 | git clone https://github.com/gohugoio/hugo.git && cd hugo && go install 9 | # Sets the go workspace and places you package 10 | # at the right place in the workspace tree 11 | - setup-go-workspace 12 | # Build the project 13 | - script: 14 | name: build site 15 | code: | 16 | cd exampleSite && hugo --------------------------------------------------------------------------------