Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d796c2f345 | ||
![]() |
99d87fc3e2 | ||
![]() |
faed620971 | ||
![]() |
cc9200c6bd | ||
![]() |
bf28048ed1 | ||
![]() |
a311d6667e | ||
![]() |
c1678bfc98 | ||
![]() |
0b007a5108 | ||
![]() |
631f66f835 | ||
![]() |
8697386d52 | ||
![]() |
6fd9bbe9ce | ||
![]() |
1604d3c39e | ||
![]() |
8f3f59a84d |
21
.github/workflows/build-deploy-website.yml
vendored
Normal file
21
.github/workflows/build-deploy-website.yml
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
name: build and deploy website
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- gh_pages
|
||||
permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.x
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
key: ${{ github.ref }}
|
||||
path: .cache
|
||||
- run: pip install mkdocs-material
|
||||
- run: mkdocs gh-deploy --force
|
29
.github/workflows/web-app-deploy.yml
vendored
Normal file
29
.github/workflows/web-app-deploy.yml
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
name: Web App Deployment
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- web_app
|
||||
permissions:
|
||||
contents: write
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Configure Git Credentials
|
||||
run: |
|
||||
git config user.name github-actions[bot]
|
||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3.x
|
||||
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
key: mkdocs-material-${{ env.cache_id }}
|
||||
path: .cache
|
||||
restore-keys: |
|
||||
mkdocs-material-
|
||||
- run: pip install mkdocs-material
|
||||
- run: mkdocs gh-deploy --force
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
.venv
|
||||
venv
|
@ -1,11 +0,0 @@
|
||||
FROM busybox:latest
|
||||
ENV PORT=8000
|
||||
|
||||
ADD index.html /www/index.html
|
||||
|
||||
# EXPOSE $PORT
|
||||
|
||||
HEALTHCHECK .mdnc -z localhost $PORT
|
||||
|
||||
# Create a basic webserver and run it until the container is stopped
|
||||
.mdecho "httpd started" && trap "exit 0;" TERM INT; httpd -v -p $PORT -h /www -f & wait
|
53
2022/Days/CICD/Jenkins/Pipeline/Jenkinsfile
vendored
53
2022/Days/CICD/Jenkins/Pipeline/Jenkinsfile
vendored
@ -1,53 +0,0 @@
|
||||
podTemplate(yaml: '''
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
spec:
|
||||
containers:
|
||||
- name: maven
|
||||
image: maven:3.8.1-jdk-8
|
||||
command:
|
||||
- sleep
|
||||
args:
|
||||
- 99d
|
||||
- name: kaniko
|
||||
image: gcr.io/kaniko-project/executor:debug
|
||||
command:
|
||||
- sleep
|
||||
args:
|
||||
- 9999999
|
||||
volumeMounts:
|
||||
- name: kaniko-secret
|
||||
mountPath: /kaniko/.docker
|
||||
restartPolicy: Never
|
||||
volumes:
|
||||
- name: kaniko-secret
|
||||
secret:
|
||||
secretName: dockercred
|
||||
items:
|
||||
- key: .dockerconfigjson
|
||||
path: config.json
|
||||
''') {
|
||||
node(POD_LABEL) {
|
||||
stage('Clone Repository') {
|
||||
git url: 'https://github.com/MichaelCade/Jenkins-HelloWorld.git', branch: 'main'
|
||||
container('maven') {
|
||||
stage('Build Image') {
|
||||
sh '''
|
||||
echo "Tests passed"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Test Image') {
|
||||
container('kaniko') {
|
||||
stage('Build Hello World App') {
|
||||
sh '''
|
||||
/kaniko/executor --context `pwd` --destination michaelcade1/helloworld:1.0
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
<pre>
|
||||
Hello World!
|
||||
</pre>
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: jenkins
|
@ -1,76 +0,0 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: jenkins
|
||||
namespace: jenkins
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
rbac.authorization.kubernetes.io/autoupdate: "true"
|
||||
labels:
|
||||
kubernetes.io/bootstrapping: rbac-defaults
|
||||
name: jenkins
|
||||
rules:
|
||||
- apiGroups:
|
||||
- '*'
|
||||
resources:
|
||||
- statefulsets
|
||||
- services
|
||||
- replicationcontrollers
|
||||
- replicasets
|
||||
- podtemplates
|
||||
- podsecuritypolicies
|
||||
- pods
|
||||
- pods/log
|
||||
- pods/exec
|
||||
- podpreset
|
||||
- poddisruptionbudget
|
||||
- persistentvolumes
|
||||
- persistentvolumeclaims
|
||||
- jobs
|
||||
- endpoints
|
||||
- deployments
|
||||
- deployments/scale
|
||||
- daemonsets
|
||||
- cronjobs
|
||||
- configmaps
|
||||
- namespaces
|
||||
- events
|
||||
- secrets
|
||||
verbs:
|
||||
- create
|
||||
- get
|
||||
- watch
|
||||
- delete
|
||||
- list
|
||||
- patch
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- update
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
rbac.authorization.kubernetes.io/autoupdate: "true"
|
||||
labels:
|
||||
kubernetes.io/bootstrapping: rbac-defaults
|
||||
name: jenkins
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: jenkins
|
||||
subjects:
|
||||
- apiGroup: rbac.authorization.k8s.io
|
||||
kind: Group
|
||||
name: system:serviceaccounts:jenkins
|
@ -1,893 +0,0 @@
|
||||
# Default values for jenkins.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare name/value pairs to be passed into your templates.
|
||||
# name: value
|
||||
|
||||
## Overrides for generated resource names
|
||||
# See templates/_helpers.tpl
|
||||
# nameOverride:
|
||||
# fullnameOverride:
|
||||
# namespaceOverride:
|
||||
|
||||
# For FQDN resolving of the controller service. Change this value to match your existing configuration.
|
||||
# ref: https://github.com/kubernetes/dns/blob/master/docs/specification.md
|
||||
clusterZone: "cluster.local"
|
||||
|
||||
renderHelmLabels: true
|
||||
|
||||
controller:
|
||||
# Used for label app.kubernetes.io/component
|
||||
componentName: "jenkins-controller"
|
||||
image: "jenkins/jenkins"
|
||||
# tag: "2.332.1-jdk11"
|
||||
tagLabel: jdk11
|
||||
imagePullPolicy: "Always"
|
||||
imagePullSecretName:
|
||||
# Optionally configure lifetime for controller-container
|
||||
lifecycle:
|
||||
# postStart:
|
||||
# exec:
|
||||
# command:
|
||||
# - "uname"
|
||||
# - "-a"
|
||||
disableRememberMe: false
|
||||
numExecutors: 0
|
||||
# configures the executor mode of the Jenkins node. Possible values are: NORMAL or EXCLUSIVE
|
||||
executorMode: "NORMAL"
|
||||
# This is ignored if enableRawHtmlMarkupFormatter is true
|
||||
markupFormatter: plainText
|
||||
customJenkinsLabels: []
|
||||
# The default configuration uses this secret to configure an admin user
|
||||
# If you don't need that user or use a different security realm then you can disable it
|
||||
adminSecret: true
|
||||
|
||||
hostNetworking: false
|
||||
# When enabling LDAP or another non-Jenkins identity source, the built-in admin account will no longer exist.
|
||||
# If you disable the non-Jenkins identity store and instead use the Jenkins internal one,
|
||||
# you should revert controller.adminUser to your preferred admin user:
|
||||
adminUser: "admin"
|
||||
# adminPassword: <defaults to random>
|
||||
admin:
|
||||
existingSecret: ""
|
||||
userKey: jenkins-admin-user
|
||||
passwordKey: jenkins-admin-password
|
||||
# This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use
|
||||
# Cloudbees Jenkins Distribution docker, you should set jenkinsHome: "/var/cloudbees-jenkins-distribution"
|
||||
jenkinsHome: "/var/jenkins_home"
|
||||
# This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use
|
||||
# Cloudbees Jenkins Distribution docker, you should set jenkinsRef: "/usr/share/cloudbees-jenkins-distribution/ref"
|
||||
jenkinsRef: "/usr/share/jenkins/ref"
|
||||
# Path to the jenkins war file which is used by jenkins-plugin-cli.
|
||||
jenkinsWar: "/usr/share/jenkins/jenkins.war"
|
||||
# Overrides the default arguments passed to the war
|
||||
# overrideArgs:
|
||||
# - --httpPort=8080
|
||||
resources:
|
||||
requests:
|
||||
cpu: "50m"
|
||||
memory: "256Mi"
|
||||
limits:
|
||||
cpu: "2000m"
|
||||
memory: "4096Mi"
|
||||
# Overrides the init container default values
|
||||
# initContainerResources:
|
||||
# requests:
|
||||
# cpu: "50m"
|
||||
# memory: "256Mi"
|
||||
# limits:
|
||||
# cpu: "2000m"
|
||||
# memory: "4096Mi"
|
||||
# Environment variables that get added to the init container (useful for e.g. http_proxy)
|
||||
# initContainerEnv:
|
||||
# - name: http_proxy
|
||||
# value: "http://192.168.64.1:3128"
|
||||
# containerEnv:
|
||||
# - name: http_proxy
|
||||
# value: "http://192.168.64.1:3128"
|
||||
# Set min/max heap here if needed with:
|
||||
# javaOpts: "-Xms512m -Xmx512m"
|
||||
# jenkinsOpts: ""
|
||||
# If you are using the ingress definitions provided by this chart via the `controller.ingress` block the configured hostname will be the ingress hostname starting with `https://` or `http://` depending on the `tls` configuration.
|
||||
# The Protocol can be overwritten by specifying `controller.jenkinsUrlProtocol`.
|
||||
# jenkinsUrlProtocol: "https"
|
||||
# If you are not using the provided ingress you can specify `controller.jenkinsUrl` to change the url definition.
|
||||
# jenkinsUrl: ""
|
||||
# If you set this prefix and use ingress controller then you might want to set the ingress path below
|
||||
# jenkinsUriPrefix: "/jenkins"
|
||||
# Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set)
|
||||
usePodSecurityContext: true
|
||||
# Note that `runAsUser`, `fsGroup`, and `securityContextCapabilities` are
|
||||
# being deprecated and replaced by `podSecurityContextOverride`.
|
||||
# Set runAsUser to 1000 to let Jenkins run as non-root user 'jenkins' which exists in 'jenkins/jenkins' docker image.
|
||||
# When setting runAsUser to a different value than 0 also set fsGroup to the same value:
|
||||
runAsUser: 1000
|
||||
fsGroup: 1000
|
||||
# If you have PodSecurityPolicies that require dropping of capabilities as suggested by CIS K8s benchmark, put them here
|
||||
securityContextCapabilities: {}
|
||||
# drop:
|
||||
# - NET_RAW
|
||||
# Completely overwrites the contents of the `securityContext`, ignoring the
|
||||
# values provided for the deprecated fields: `runAsUser`, `fsGroup`, and
|
||||
# `securityContextCapabilities`. In the case of mounting an ext4 filesystem,
|
||||
# it might be desirable to use `supplementalGroups` instead of `fsGroup` in
|
||||
# the `securityContext` block: https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-589915496
|
||||
# podSecurityContextOverride:
|
||||
# runAsUser: 1000
|
||||
# runAsNonRoot: true
|
||||
# supplementalGroups: [1000]
|
||||
# # capabilities: {}
|
||||
# Container securityContext
|
||||
containerSecurityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
servicePort: 8080
|
||||
targetPort: 8080
|
||||
# For minikube, set this to NodePort, elsewhere use LoadBalancer
|
||||
# Use ClusterIP if your setup includes ingress controller
|
||||
serviceType: ClusterIP
|
||||
# Use Local to preserve the client source IP and avoids a second hop for LoadBalancer and Nodeport type services,
|
||||
# but risks potentially imbalanced traffic spreading.
|
||||
serviceExternalTrafficPolicy:
|
||||
# Jenkins controller service annotations
|
||||
serviceAnnotations: {}
|
||||
# Jenkins controller custom labels
|
||||
statefulSetLabels: {}
|
||||
# foo: bar
|
||||
# bar: foo
|
||||
# Jenkins controller service labels
|
||||
serviceLabels: {}
|
||||
# service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https
|
||||
# Put labels on Jenkins controller pod
|
||||
podLabels: {}
|
||||
# Used to create Ingress record (should used with ServiceType: ClusterIP)
|
||||
# nodePort: <to set explicitly, choose port between 30000-32767
|
||||
# Enable Kubernetes Startup, Liveness and Readiness Probes
|
||||
# if Startup Probe is supported, enable it too
|
||||
# ~ 2 minutes to allow Jenkins to restart when upgrading plugins. Set ReadinessTimeout to be shorter than LivenessTimeout.
|
||||
healthProbes: true
|
||||
probes:
|
||||
startupProbe:
|
||||
httpGet:
|
||||
path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
|
||||
port: http
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 12
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
|
||||
port: http
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
# If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead.
|
||||
# It delays the initial liveness probe while Jenkins is starting
|
||||
# initialDelaySeconds: 60
|
||||
readinessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
|
||||
port: http
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
# If Startup Probe is not supported on your Kubernetes cluster, you might want to use "initialDelaySeconds" instead.
|
||||
# It delays the initial readyness probe while Jenkins is starting
|
||||
# initialDelaySeconds: 60
|
||||
|
||||
# PodDisruptionBudget config
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
# For Kubernetes v1.5+, use 'policy/v1beta1'
|
||||
# For Kubernetes v1.21+, use 'policy/v1'
|
||||
apiVersion: "policy/v1beta1"
|
||||
annotations: {}
|
||||
labels: {}
|
||||
# maxUnavailable: "0"
|
||||
|
||||
agentListenerEnabled: true
|
||||
agentListenerPort: 50000
|
||||
agentListenerHostPort:
|
||||
agentListenerNodePort:
|
||||
disabledAgentProtocols:
|
||||
- JNLP-connect
|
||||
- JNLP2-connect
|
||||
csrf:
|
||||
defaultCrumbIssuer:
|
||||
enabled: true
|
||||
proxyCompatability: true
|
||||
# Kubernetes service type for the JNLP agent service
|
||||
# agentListenerServiceType is the Kubernetes Service type for the JNLP agent service,
|
||||
# either 'LoadBalancer', 'NodePort', or 'ClusterIP'
|
||||
# Note if you set this to 'LoadBalancer', you *must* define annotations to secure it. By default
|
||||
# this will be an external load balancer and allowing inbound 0.0.0.0/0, a HUGE
|
||||
# security risk: https://github.com/kubernetes/charts/issues/1341
|
||||
agentListenerServiceType: "ClusterIP"
|
||||
# Optionally assign an IP to the LoadBalancer agentListenerService LoadBalancer
|
||||
# GKE users: only regional static IPs will work for Service Load balancer.
|
||||
agentListenerLoadBalancerIP:
|
||||
agentListenerServiceAnnotations: {}
|
||||
|
||||
# Example of 'LoadBalancer' type of agent listener with annotations securing it
|
||||
# agentListenerServiceType: LoadBalancer
|
||||
# agentListenerServiceAnnotations:
|
||||
# service.beta.kubernetes.io/aws-load-balancer-internal: "True"
|
||||
# service.beta.kubernetes.io/load-balancer-source-ranges: "172.0.0.0/8, 10.0.0.0/8"
|
||||
|
||||
# LoadBalancerSourcesRange is a list of allowed CIDR values, which are combined with ServicePort to
|
||||
# set allowed inbound rules on the security group assigned to the controller load balancer
|
||||
loadBalancerSourceRanges:
|
||||
- 0.0.0.0/0
|
||||
# Optionally assign a known public LB IP
|
||||
# loadBalancerIP: 1.2.3.4
|
||||
# Optionally configure a JMX port
|
||||
# requires additional javaOpts, ie
|
||||
# javaOpts: >
|
||||
# -Dcom.sun.management.jmxremote.port=4000
|
||||
# -Dcom.sun.management.jmxremote.authenticate=false
|
||||
# -Dcom.sun.management.jmxremote.ssl=false
|
||||
# jmxPort: 4000
|
||||
# Optionally configure other ports to expose in the controller container
|
||||
extraPorts: []
|
||||
# - name: BuildInfoProxy
|
||||
# port: 9000
|
||||
|
||||
# List of plugins to be install during Jenkins controller start
|
||||
installPlugins:
|
||||
- kubernetes:1.31.3
|
||||
- workflow-aggregator:2.6
|
||||
- git:4.10.2
|
||||
- configuration-as-code:1.55.1
|
||||
|
||||
# Set to false to download the minimum required version of all dependencies.
|
||||
installLatestPlugins: true
|
||||
|
||||
# Set to true to download latest dependencies of any plugin that is requested to have the latest version.
|
||||
installLatestSpecifiedPlugins: false
|
||||
|
||||
# List of plugins to install in addition to those listed in controller.installPlugins
|
||||
additionalPlugins: []
|
||||
|
||||
# Enable to initialize the Jenkins controller only once on initial installation.
|
||||
# Without this, whenever the controller gets restarted (Evicted, etc.) it will fetch plugin updates which has the potential to cause breakage.
|
||||
# Note that for this to work, `persistence.enabled` needs to be set to `true`
|
||||
initializeOnce: false
|
||||
|
||||
# Enable to always override the installed plugins with the values of 'controller.installPlugins' on upgrade or redeployment.
|
||||
# overwritePlugins: true
|
||||
|
||||
# Configures if plugins bundled with `controller.image` should be overwritten with the values of 'controller.installPlugins' on upgrade or redeployment.
|
||||
overwritePluginsFromImage: true
|
||||
|
||||
# Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter), useful with ghprb plugin.
|
||||
# The plugin is not installed by default, please update controller.installPlugins.
|
||||
enableRawHtmlMarkupFormatter: false
|
||||
# Used to approve a list of groovy functions in pipelines used the script-security plugin. Can be viewed under /scriptApproval
|
||||
scriptApproval: []
|
||||
# - "method groovy.json.JsonSlurperClassic parseText java.lang.String"
|
||||
# - "new groovy.json.JsonSlurperClassic"
|
||||
# List of groovy init scripts to be executed during Jenkins controller start
|
||||
initScripts: []
|
||||
# - |
|
||||
# print 'adding global pipeline libraries, register properties, bootstrap jobs...'
|
||||
|
||||
# 'name' is a name of an existing secret in same namespace as jenkins,
|
||||
# 'keyName' is the name of one of the keys inside current secret.
|
||||
# the 'name' and 'keyName' are concatenated with a '-' in between, so for example:
|
||||
# an existing secret "secret-credentials" and a key inside it named "github-password" should be used in Jcasc as ${secret-credentials-github-password}
|
||||
# 'name' and 'keyName' must be lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-',
|
||||
# and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc')
|
||||
additionalExistingSecrets: []
|
||||
# - name: secret-name-1
|
||||
# keyName: username
|
||||
# - name: secret-name-1
|
||||
# keyName: password
|
||||
|
||||
additionalSecrets: []
|
||||
# - name: nameOfSecret
|
||||
# value: secretText
|
||||
|
||||
# Generate SecretClaim resources in order to create Kubernetes secrets from HashiCorp Vault using kube-vault-controller.
|
||||
# 'name' is name of the secret that will be created in Kubernetes. The Jenkins fullname is prepended to this value.
|
||||
# 'path' is the fully qualified path to the secret in Vault
|
||||
# 'type' is an optional Kubernetes secret type. Defaults to 'Opaque'
|
||||
# 'renew' is an optional secret renewal time in seconds
|
||||
secretClaims: []
|
||||
# - name: secretName # required
|
||||
# path: testPath # required
|
||||
# type: kubernetes.io/tls # optional
|
||||
# renew: 60 # optional
|
||||
|
||||
# Name of default cloud configuration.
|
||||
cloudName: "kubernetes"
|
||||
|
||||
# Below is the implementation of Jenkins Configuration as Code. Add a key under configScripts for each configuration area,
|
||||
# where each corresponds to a plugin or section of the UI. Each key (prior to | character) is just a label, and can be any value.
|
||||
# Keys are only used to give the section a meaningful name. The only restriction is they may only contain RFC 1123 \ DNS label
|
||||
# characters: lowercase letters, numbers, and hyphens. The keys become the name of a configuration yaml file on the controller in
|
||||
# /var/jenkins_home/casc_configs (by default) and will be processed by the Configuration as Code Plugin. The lines after each |
|
||||
# become the content of the configuration yaml file. The first line after this is a JCasC root element, eg jenkins, credentials,
|
||||
# etc. Best reference is https://<jenkins_url>/configuration-as-code/reference. The example below creates a welcome message:
|
||||
JCasC:
|
||||
defaultConfig: true
|
||||
configScripts: {}
|
||||
# welcome-message: |
|
||||
# jenkins:
|
||||
# systemMessage: Welcome to our CI\CD server. This Jenkins is configured and managed 'as code'.
|
||||
# Ignored if securityRealm is defined in controller.JCasC.configScripts and
|
||||
# ignored if controller.enableXmlConfig=true as controller.securityRealm takes precedence
|
||||
securityRealm: |-
|
||||
local:
|
||||
allowsSignup: false
|
||||
enableCaptcha: false
|
||||
users:
|
||||
- id: "${chart-admin-username}"
|
||||
name: "Jenkins Admin"
|
||||
password: "${chart-admin-password}"
|
||||
# Ignored if authorizationStrategy is defined in controller.JCasC.configScripts
|
||||
authorizationStrategy: |-
|
||||
loggedInUsersCanDoAnything:
|
||||
allowAnonymousRead: false
|
||||
# Optionally specify additional init-containers
|
||||
customInitContainers: []
|
||||
# - name: custom-init
|
||||
# image: "alpine:3.7"
|
||||
# imagePullPolicy: Always
|
||||
# command: [ "uname", "-a" ]
|
||||
|
||||
sidecars:
|
||||
configAutoReload:
|
||||
# If enabled: true, Jenkins Configuration as Code will be reloaded on-the-fly without a reboot. If false or not-specified,
|
||||
# jcasc changes will cause a reboot and will only be applied at the subsequent start-up. Auto-reload uses the
|
||||
# http://<jenkins_url>/reload-configuration-as-code endpoint to reapply config when changes to the configScripts are detected.
|
||||
enabled: true
|
||||
image: kiwigrid/k8s-sidecar:1.15.0
|
||||
imagePullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 100Mi
|
||||
# requests:
|
||||
# cpu: 50m
|
||||
# memory: 50Mi
|
||||
# How many connection-related errors to retry on
|
||||
reqRetryConnect: 10
|
||||
# env:
|
||||
# - name: REQ_TIMEOUT
|
||||
# value: "30"
|
||||
# SSH port value can be set to any unused TCP port. The default, 1044, is a non-standard SSH port that has been chosen at random.
|
||||
# Is only used to reload jcasc config from the sidecar container running in the Jenkins controller pod.
|
||||
# This TCP port will not be open in the pod (unless you specifically configure this), so Jenkins will not be
|
||||
# accessible via SSH from outside of the pod. Note if you use non-root pod privileges (runAsUser & fsGroup),
|
||||
# this must be > 1024:
|
||||
sshTcpPort: 1044
|
||||
# folder in the pod that should hold the collected dashboards:
|
||||
folder: "/var/jenkins_home/casc_configs"
|
||||
# If specified, the sidecar will search for JCasC config-maps inside this namespace.
|
||||
# Otherwise the namespace in which the sidecar is running will be used.
|
||||
# It's also possible to specify ALL to search in all namespaces:
|
||||
# searchNamespace:
|
||||
containerSecurityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
|
||||
# Allows you to inject additional/other sidecars
|
||||
other: []
|
||||
## The example below runs the client for https://smee.io as sidecar container next to Jenkins,
|
||||
## that allows to trigger build behind a secure firewall.
|
||||
## https://jenkins.io/blog/2019/01/07/webhook-firewalls/#triggering-builds-with-webhooks-behind-a-secure-firewall
|
||||
##
|
||||
## Note: To use it you should go to https://smee.io/new and update the url to the generete one.
|
||||
# - name: smee
|
||||
# image: docker.io/twalter/smee-client:1.0.2
|
||||
# args: ["--port", "{{ .Values.controller.servicePort }}", "--path", "/github-webhook/", "--url", "https://smee.io/new"]
|
||||
# resources:
|
||||
# limits:
|
||||
# cpu: 50m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 10m
|
||||
# memory: 32Mi
|
||||
# Name of the Kubernetes scheduler to use
|
||||
schedulerName: ""
|
||||
# Node labels and tolerations for pod assignment
|
||||
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
|
||||
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature
|
||||
nodeSelector: {}
|
||||
|
||||
terminationGracePeriodSeconds:
|
||||
|
||||
terminationMessagePath:
|
||||
terminationMessagePolicy:
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
# Leverage a priorityClass to ensure your pods survive resource shortages
|
||||
# ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName:
|
||||
|
||||
podAnnotations: {}
|
||||
# Add StatefulSet annotations
|
||||
statefulSetAnnotations: {}
|
||||
|
||||
# StatefulSet updateStrategy
|
||||
# ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
|
||||
updateStrategy: {}
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
# Override for the default paths that map requests to the backend
|
||||
paths: []
|
||||
# - backend:
|
||||
# serviceName: ssl-redirect
|
||||
# servicePort: use-annotation
|
||||
# - backend:
|
||||
# serviceName: >-
|
||||
# {{ template "jenkins.fullname" . }}
|
||||
# # Don't use string here, use only integer value!
|
||||
# servicePort: 8080
|
||||
# For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
|
||||
# For Kubernetes v1.19+, use 'networking.k8s.io/v1'
|
||||
apiVersion: "extensions/v1beta1"
|
||||
labels: {}
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
|
||||
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
|
||||
# ingressClassName: nginx
|
||||
# Set this path to jenkinsUriPrefix above or use annotations to rewrite path
|
||||
# path: "/jenkins"
|
||||
# configures the hostname e.g. jenkins.example.com
|
||||
hostName:
|
||||
tls:
|
||||
# - secretName: jenkins.cluster.local
|
||||
# hosts:
|
||||
# - jenkins.cluster.local
|
||||
|
||||
# often you want to have your controller all locked down and private
|
||||
# but you still want to get webhooks from your SCM
|
||||
# A secondary ingress will let you expose different urls
|
||||
# with a differnt configuration
|
||||
secondaryingress:
|
||||
enabled: false
|
||||
# paths you want forwarded to the backend
|
||||
# ex /github-webhook
|
||||
paths: []
|
||||
# For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
|
||||
# For Kubernetes v1.19+, use 'networking.k8s.io/v1'
|
||||
apiVersion: "extensions/v1beta1"
|
||||
labels: {}
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
|
||||
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
|
||||
# ingressClassName: nginx
|
||||
# configures the hostname e.g. jenkins-external.example.com
|
||||
hostName:
|
||||
tls:
|
||||
# - secretName: jenkins-external.example.com
|
||||
# hosts:
|
||||
# - jenkins-external.example.com
|
||||
|
||||
# If you're running on GKE and need to configure a backendconfig
|
||||
# to finish ingress setup, use the following values.
|
||||
# Docs: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig
|
||||
backendconfig:
|
||||
enabled: false
|
||||
apiVersion: "extensions/v1beta1"
|
||||
name:
|
||||
labels: {}
|
||||
annotations: {}
|
||||
spec: {}
|
||||
|
||||
# Openshift route
|
||||
route:
|
||||
enabled: false
|
||||
labels: {}
|
||||
annotations: {}
|
||||
# path: "/jenkins"
|
||||
|
||||
# controller.hostAliases allows for adding entries to Pod /etc/hosts:
|
||||
# https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
|
||||
hostAliases: []
|
||||
# - ip: 192.168.50.50
|
||||
# hostnames:
|
||||
# - something.local
|
||||
# - ip: 10.0.50.50
|
||||
# hostnames:
|
||||
# - other.local
|
||||
|
||||
# Expose Prometheus metrics
|
||||
prometheus:
|
||||
# If enabled, add the prometheus plugin to the list of plugins to install
|
||||
# https://plugins.jenkins.io/prometheus
|
||||
enabled: false
|
||||
# Additional labels to add to the ServiceMonitor object
|
||||
serviceMonitorAdditionalLabels: {}
|
||||
# Set a custom namespace where to deploy ServiceMonitor resource
|
||||
# serviceMonitorNamespace: monitoring
|
||||
scrapeInterval: 60s
|
||||
# This is the default endpoint used by the prometheus plugin
|
||||
scrapeEndpoint: /prometheus
|
||||
# Additional labels to add to the PrometheusRule object
|
||||
alertingRulesAdditionalLabels: {}
|
||||
# An array of prometheus alerting rules
|
||||
# See here: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
|
||||
# The `groups` root object is added by default, simply add the rule entries
|
||||
alertingrules: []
|
||||
# Set a custom namespace where to deploy PrometheusRule resource
|
||||
prometheusRuleNamespace: ""
|
||||
|
||||
# Can be used to disable rendering controller test resources when using helm template
|
||||
testEnabled: true
|
||||
|
||||
httpsKeyStore:
|
||||
jenkinsHttpsJksSecretName: ''
|
||||
enable: false
|
||||
httpPort: 8081
|
||||
path: "/var/jenkins_keystore"
|
||||
fileName: "keystore.jks"
|
||||
password: "password"
|
||||
# Convert keystore.jks files content to base64 ( cat keystore.jks | base64 ) and put the output here
|
||||
jenkinsKeyStoreBase64Encoded: |
|
||||
/u3+7QAAAAIAAAABAAAAAQANamVua2luc2NpLmNvbQAAAW2r/b1ZAAAFATCCBP0wDgYKKwYBBAEq
|
||||
AhEBAQUABIIE6QbCqasvoHS0pSwYqSvdydMCB9t+VNfwhFIiiuAelJfO5sSe2SebJbtwHgLcRz1Z
|
||||
gMtWgOSFdl3bWSzA7vrW2LED52h+jXLYSWvZzuDuh8hYO85m10ikF6QR+dTi4jra0whIFDvq3pxe
|
||||
TnESxEsN+DvbZM3jA3qsjQJSeISNpDjO099dqQvHpnCn18lyk7J4TWJ8sOQQb1EM2zDAfAOSqA/x
|
||||
QuPEFl74DlY+5DIk6EBvpmWhaMSvXzWZACGA0sYqa157dq7O0AqmuLG/EI5EkHETO4CrtBW+yLcy
|
||||
2dUCXOMA+j+NjM1BjrQkYE5vtSfNO6lFZcISyKo5pTFlcA7ut0Fx2nZ8GhHTn32CpeWwNcZBn1gR
|
||||
pZVt6DxVVkhTAkMLhR4rL2wGIi/1WRs23ZOLGKtyDNvDHnQyDiQEoJGy9nAthA8aNHa3cfdF10vB
|
||||
Drb19vtpFHmpvKEEhpk2EBRF4fTi644Fuhu2Ied6118AlaPvEea+n6G4vBz+8RWuVCmZjLU+7h8l
|
||||
Hy3/WdUPoIL5eW7Kz+hS+sRTFzfu9C48dMkQH3a6f3wSY+mufizNF9U298r98TnYy+PfDJK0bstG
|
||||
Ph6yPWx8DGXKQBwrhWJWXI6JwZDeC5Ny+l8p1SypTmAjpIaSW3ge+KgcL6Wtt1R5hUV1ajVwVSUi
|
||||
HF/FachKqPqyLJFZTGjNrxnmNYpt8P1d5JTvJfmfr55Su/P9n7kcyWp7zMcb2Q5nlXt4tWogOHLI
|
||||
OzEWKCacbFfVHE+PpdrcvCVZMDzFogIq5EqGTOZe2poPpBVE+1y9mf5+TXBegy5HToLWvmfmJNTO
|
||||
NCDuBjgLs2tdw2yMPm4YEr57PnMX5gGTC3f2ZihXCIJDCRCdQ9sVBOjIQbOCzxFXkVITo0BAZhCi
|
||||
Yz61wt3Ud8e//zhXWCkCsSV+IZCxxPzhEFd+RFVjW0Nm9hsb2FgAhkXCjsGROgoleYgaZJWvQaAg
|
||||
UyBzMmKDPKTllBHyE3Gy1ehBNGPgEBChf17/9M+j8pcm1OmlM434ctWQ4qW7RU56//yq1soFY0Te
|
||||
fu2ei03a6m68fYuW6s7XEEK58QisJWRAvEbpwu/eyqfs7PsQ+zSgJHyk2rO95IxdMtEESb2GRuoi
|
||||
Bs+AHNdYFTAi+GBWw9dvEgqQ0Mpv0//6bBE/Fb4d7b7f56uUNnnE7mFnjGmGQN+MvC62pfwfvJTT
|
||||
EkT1iZ9kjM9FprTFWXT4UmO3XTvesGeE50sV9YPm71X4DCQwc4KE8vyuwj0s6oMNAUACW2ClU9QQ
|
||||
y0tRpaF1tzs4N42Q5zl0TzWxbCCjAtC3u6xf+c8MCGrr7DzNhm42LOQiHTa4MwX4x96q7235oiAU
|
||||
iQqSI/hyF5yLpWw4etyUvsx2/0/0wkuTU1FozbLoCWJEWcPS7QadMrRRISxHf0YobIeQyz34regl
|
||||
t1qSQ3dCU9D6AHLgX6kqllx4X0fnFq7LtfN7fA2itW26v+kAT2QFZ3qZhINGfofCja/pITC1uNAZ
|
||||
gsJaTMcQ600krj/ynoxnjT+n1gmeqThac6/Mi3YlVeRtaxI2InL82ZuD+w/dfY9OpPssQjy3xiQa
|
||||
jPuaMWXRxz/sS9syOoGVH7XBwKrWpQcpchozWJt40QV5DslJkclcr8aC2AGlzuJMTdEgz1eqV0+H
|
||||
bAXG9HRHN/0eJTn1/QAAAAEABVguNTA5AAADjzCCA4swggJzAhRGqVxH4HTLYPGO4rzHcCPeGDKn
|
||||
xTANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCY2ExEDAOBgNVBAgMB29udGFyaW8xEDAOBgNV
|
||||
BAcMB3Rvcm9udG8xFDASBgNVBAoMC2plbmtpbnN0ZXN0MRkwFwYDVQQDDBBqZW5raW5zdGVzdC5p
|
||||
bmZvMR0wGwYJKoZIhvcNAQkBFg50ZXN0QHRlc3QuaW5mbzAeFw0xOTEwMDgxNTI5NTVaFw0xOTEx
|
||||
MDcxNTI5NTVaMIGBMQswCQYDVQQGEwJjYTEQMA4GA1UECAwHb250YXJpbzEQMA4GA1UEBwwHdG9y
|
||||
b250bzEUMBIGA1UECgwLamVua2luc3Rlc3QxGTAXBgNVBAMMEGplbmtpbnN0ZXN0LmluZm8xHTAb
|
||||
BgkqhkiG9w0BCQEWDnRlc3RAdGVzdC5pbmZvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||
AQEA02q352JTHGvROMBhSHvSv+vnoOTDKSTz2aLQn0tYrIRqRo+8bfmMjXuhkwZPSnCpvUGNAJ+w
|
||||
Jrt/dqMoYUjCBkjylD/qHmnXN5EwS1cMg1Djh65gi5JJLFJ7eNcoSsr/0AJ+TweIal1jJSP3t3PF
|
||||
9Uv21gm6xdm7HnNK66WpUUXLDTKaIs/jtagVY1bLOo9oEVeLN4nT2CYWztpMvdCyEDUzgEdDbmrP
|
||||
F5nKUPK5hrFqo1Dc5rUI4ZshL3Lpv398aMxv6n2adQvuL++URMEbXXBhxOrT6rCtYzbcR5fkwS9i
|
||||
d3Br45CoWOQro02JAepoU0MQKY5+xQ4Bq9Q7tB9BAwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAe
|
||||
4xc+mSvKkrKBHg9/zpkWgZUiOp4ENJCi8H4tea/PCM439v6y/kfjT/okOokFvX8N5aa1OSz2Vsrl
|
||||
m8kjIc6hiA7bKzT6lb0EyjUShFFZ5jmGVP4S7/hviDvgB5yEQxOPpumkdRP513YnEGj/o9Pazi5h
|
||||
/MwpRxxazoda9r45kqQpyG+XoM4pB+Fd3JzMc4FUGxfVPxJU4jLawnJJiZ3vqiSyaB0YyUL+Er1Q
|
||||
6NnqtR4gEBF0ZVlQmkycFvD4EC2boP943dLqNUvop+4R3SM1QMM6P5u8iTXtHd/VN4MwMyy1wtog
|
||||
hYAzODo1Jt59pcqqKJEas0C/lFJEB3frw4ImNx5fNlJYOpx+ijfQs9m39CevDq0=
|
||||
|
||||
agent:
|
||||
enabled: true
|
||||
defaultsProviderTemplate: ""
|
||||
# URL for connecting to the Jenkins contoller
|
||||
jenkinsUrl:
|
||||
# connect to the specified host and port, instead of connecting directly to the Jenkins controller
|
||||
jenkinsTunnel:
|
||||
kubernetesConnectTimeout: 5
|
||||
kubernetesReadTimeout: 15
|
||||
maxRequestsPerHostStr: "32"
|
||||
namespace:
|
||||
image: "jenkins/inbound-agent"
|
||||
tag: "4.11.2-4"
|
||||
workingDir: "/home/jenkins/agent"
|
||||
nodeUsageMode: "NORMAL"
|
||||
customJenkinsLabels: []
|
||||
# name of the secret to be used for image pulling
|
||||
imagePullSecretName:
|
||||
componentName: "jenkins-agent"
|
||||
websocket: false
|
||||
privileged: false
|
||||
runAsUser:
|
||||
runAsGroup:
|
||||
resources:
|
||||
requests:
|
||||
cpu: "512m"
|
||||
memory: "512Mi"
|
||||
limits:
|
||||
cpu: "512m"
|
||||
memory: "512Mi"
|
||||
# You may want to change this to true while testing a new image
|
||||
alwaysPullImage: false
|
||||
# Controls how agent pods are retained after the Jenkins build completes
|
||||
# Possible values: Always, Never, OnFailure
|
||||
podRetention: "Never"
|
||||
# Disable if you do not want the Yaml the agent pod template to show up
|
||||
# in the job Console Output. This can be helpful for either security reasons
|
||||
# or simply to clean up the output to make it easier to read.
|
||||
showRawYaml: true
|
||||
# You can define the volumes that you want to mount for this container
|
||||
# Allowed types are: ConfigMap, EmptyDir, HostPath, Nfs, PVC, Secret
|
||||
# Configure the attributes as they appear in the corresponding Java class for that type
|
||||
# https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes
|
||||
volumes: []
|
||||
# - type: ConfigMap
|
||||
# configMapName: myconfigmap
|
||||
# mountPath: /var/myapp/myconfigmap
|
||||
# - type: EmptyDir
|
||||
# mountPath: /var/myapp/myemptydir
|
||||
# memory: false
|
||||
# - type: HostPath
|
||||
# hostPath: /var/lib/containers
|
||||
# mountPath: /var/myapp/myhostpath
|
||||
# - type: Nfs
|
||||
# mountPath: /var/myapp/mynfs
|
||||
# readOnly: false
|
||||
# serverAddress: "192.0.2.0"
|
||||
# serverPath: /var/lib/containers
|
||||
# - type: PVC
|
||||
# claimName: mypvc
|
||||
# mountPath: /var/myapp/mypvc
|
||||
# readOnly: false
|
||||
# - type: Secret
|
||||
# defaultMode: "600"
|
||||
# mountPath: /var/myapp/mysecret
|
||||
# secretName: mysecret
|
||||
# Pod-wide environment, these vars are visible to any container in the agent pod
|
||||
|
||||
# You can define the workspaceVolume that you want to mount for this container
|
||||
# Allowed types are: DynamicPVC, EmptyDir, HostPath, Nfs, PVC
|
||||
# Configure the attributes as they appear in the corresponding Java class for that type
|
||||
# https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes/workspace
|
||||
workspaceVolume: {}
|
||||
## DynamicPVC example
|
||||
# type: DynamicPVC
|
||||
# configMapName: myconfigmap
|
||||
## EmptyDir example
|
||||
# type: EmptyDir
|
||||
# memory: false
|
||||
## HostPath example
|
||||
# type: HostPath
|
||||
# hostPath: /var/lib/containers
|
||||
## NFS example
|
||||
# type: Nfs
|
||||
# readOnly: false
|
||||
# serverAddress: "192.0.2.0"
|
||||
# serverPath: /var/lib/containers
|
||||
## PVC example
|
||||
# type: PVC
|
||||
# claimName: mypvc
|
||||
# readOnly: false
|
||||
#
|
||||
# Pod-wide environment, these vars are visible to any container in the agent pod
|
||||
envVars: []
|
||||
# - name: PATH
|
||||
# value: /usr/local/bin
|
||||
nodeSelector: {}
|
||||
# Key Value selectors. Ex:
|
||||
# jenkins-agent: v1
|
||||
|
||||
# Executed command when side container gets started
|
||||
command:
|
||||
args: "${computer.jnlpmac} ${computer.name}"
|
||||
# Side container name
|
||||
sideContainerName: "jnlp"
|
||||
# Doesn't allocate pseudo TTY by default
|
||||
TTYEnabled: false
|
||||
# Max number of spawned agent
|
||||
containerCap: 10
|
||||
# Pod name
|
||||
podName: "default"
|
||||
# Allows the Pod to remain active for reuse until the configured number of
|
||||
# minutes has passed since the last step was executed on it.
|
||||
idleMinutes: 0
|
||||
# Raw yaml template for the Pod. For example this allows usage of toleration for agent pods.
|
||||
# https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates
|
||||
# https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
||||
yamlTemplate: ""
|
||||
# yamlTemplate: |-
|
||||
# apiVersion: v1
|
||||
# kind: Pod
|
||||
# spec:
|
||||
# tolerations:
|
||||
# - key: "key"
|
||||
# operator: "Equal"
|
||||
# value: "value"
|
||||
# Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates: merge or override
|
||||
yamlMergeStrategy: "override"
|
||||
# Timeout in seconds for an agent to be online
|
||||
connectTimeout: 100
|
||||
# Annotations to apply to the pod.
|
||||
annotations: {}
|
||||
|
||||
# Below is the implementation of custom pod templates for the default configured kubernetes cloud.
|
||||
# Add a key under podTemplates for each pod template. Each key (prior to | character) is just a label, and can be any value.
|
||||
# Keys are only used to give the pod template a meaningful name. The only restriction is they may only contain RFC 1123 \ DNS label
|
||||
# characters: lowercase letters, numbers, and hyphens. Each pod template can contain multiple containers.
|
||||
# For this pod templates configuration to be loaded the following values must be set:
|
||||
# controller.JCasC.defaultConfig: true
|
||||
# Best reference is https://<jenkins_url>/configuration-as-code/reference#Cloud-kubernetes. The example below creates a python pod template.
|
||||
podTemplates: {}
|
||||
# python: |
|
||||
# - name: python
|
||||
# label: jenkins-python
|
||||
# serviceAccount: jenkins
|
||||
# containers:
|
||||
# - name: python
|
||||
# image: python:3
|
||||
# command: "/bin/sh -c"
|
||||
# args: "cat"
|
||||
# ttyEnabled: true
|
||||
# privileged: true
|
||||
# resourceRequestCpu: "400m"
|
||||
# resourceRequestMemory: "512Mi"
|
||||
# resourceLimitCpu: "1"
|
||||
# resourceLimitMemory: "1024Mi"
|
||||
|
||||
# Here you can add additional agents
|
||||
# They inherit all values from `agent` so you only need to specify values which differ
|
||||
additionalAgents: {}
|
||||
# maven:
|
||||
# podName: maven
|
||||
# customJenkinsLabels: maven
|
||||
# # An example of overriding the jnlp container
|
||||
# # sideContainerName: jnlp
|
||||
# image: jenkins/jnlp-agent-maven
|
||||
# tag: latest
|
||||
# python:
|
||||
# podName: python
|
||||
# customJenkinsLabels: python
|
||||
# sideContainerName: python
|
||||
# image: python
|
||||
# tag: "3"
|
||||
# command: "/bin/sh -c"
|
||||
# args: "cat"
|
||||
# TTYEnabled: true
|
||||
|
||||
persistence:
|
||||
enabled: true
|
||||
## A manually managed Persistent Volume and Claim
|
||||
## Requires persistence.enabled: true
|
||||
## If defined, PVC must be created manually before volume will be bound
|
||||
existingClaim:
|
||||
## jenkins data Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
##
|
||||
storageClass: jenkins-pv
|
||||
annotations: {}
|
||||
labels: {}
|
||||
accessMode: "ReadWriteOnce"
|
||||
size: "8Gi"
|
||||
volumes:
|
||||
# - name: nothing
|
||||
# emptyDir: {}
|
||||
mounts:
|
||||
# - mountPath: /var/nothing
|
||||
# name: nothing
|
||||
# readOnly: true
|
||||
|
||||
networkPolicy:
|
||||
# Enable creation of NetworkPolicy resources.
|
||||
enabled: false
|
||||
# For Kubernetes v1.4, v1.5 and v1.6, use 'extensions/v1beta1'
|
||||
# For Kubernetes v1.7, use 'networking.k8s.io/v1'
|
||||
apiVersion: networking.k8s.io/v1
|
||||
# You can allow agents to connect from both within the cluster (from within specific/all namespaces) AND/OR from a given external IP range
|
||||
internalAgents:
|
||||
allowed: true
|
||||
podLabels: {}
|
||||
namespaceLabels: {}
|
||||
# project: myproject
|
||||
externalAgents: {}
|
||||
# ipCIDR: 172.17.0.0/16
|
||||
# except:
|
||||
# - 172.17.1.0/24
|
||||
|
||||
## Install Default RBAC roles and bindings
|
||||
rbac:
|
||||
create: true
|
||||
readSecrets: false
|
||||
|
||||
serviceAccount:
|
||||
create: false
|
||||
# The name of the service account is autogenerated by default
|
||||
name: jenkins
|
||||
annotations: {}
|
||||
imagePullSecretName:
|
||||
|
||||
|
||||
serviceAccountAgent:
|
||||
# Specifies whether a ServiceAccount should be created
|
||||
create: false
|
||||
# The name of the ServiceAccount to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name:
|
||||
annotations: {}
|
||||
imagePullSecretName:
|
||||
|
||||
## Backup cronjob configuration
|
||||
## Ref: https://github.com/maorfr/kube-tasks
|
||||
backup:
|
||||
# Backup must use RBAC
|
||||
# So by enabling backup you are enabling RBAC specific for backup
|
||||
enabled: false
|
||||
# Used for label app.kubernetes.io/component
|
||||
componentName: "backup"
|
||||
# Schedule to run jobs. Must be in cron time format
|
||||
# Ref: https://crontab.guru/
|
||||
schedule: "0 2 * * *"
|
||||
labels: {}
|
||||
serviceAccount:
|
||||
create: true
|
||||
name:
|
||||
annotations: {}
|
||||
# Example for authorization to AWS S3 using kube2iam or IRSA
|
||||
# Can also be done using environment variables
|
||||
# iam.amazonaws.com/role: "jenkins"
|
||||
# "eks.amazonaws.com/role-arn": "arn:aws:iam::123456789012:role/jenkins-backup"
|
||||
# Set this to terminate the job that is running/failing continously and set the job status to "Failed"
|
||||
activeDeadlineSeconds: ""
|
||||
image:
|
||||
repository: "maorfr/kube-tasks"
|
||||
tag: "0.2.0"
|
||||
# Additional arguments for kube-tasks
|
||||
# Ref: https://github.com/maorfr/kube-tasks#simple-backup
|
||||
extraArgs: []
|
||||
# Add existingSecret for AWS credentials
|
||||
existingSecret: {}
|
||||
## Example for using an existing secret
|
||||
# jenkinsaws:
|
||||
## Use this key for AWS access key ID
|
||||
# awsaccesskey: jenkins_aws_access_key
|
||||
## Use this key for AWS secret access key
|
||||
# awssecretkey: jenkins_aws_secret_key
|
||||
# Add additional environment variables
|
||||
# jenkinsgcp:
|
||||
## Use this key for GCP credentials
|
||||
# gcpcredentials: credentials.json
|
||||
env: []
|
||||
# Example environment variable required for AWS credentials chain
|
||||
# - name: "AWS_REGION"
|
||||
# value: "us-east-1"
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1
|
||||
limits:
|
||||
memory: 1Gi
|
||||
cpu: 1
|
||||
# Destination to store the backup artifacts
|
||||
# Supported cloud storage services: AWS S3, Minio S3, Azure Blob Storage, Google Cloud Storage
|
||||
# Additional support can added. Visit this repository for details
|
||||
# Ref: https://github.com/maorfr/skbn
|
||||
destination: "s3://jenkins-data/backup"
|
||||
# By enabling only the jenkins_home/jobs folder gets backed up, not the whole jenkins instance
|
||||
onlyJobs: false
|
||||
# Enable backup pod security context (must be `true` if runAsUser or fsGroup are set)
|
||||
usePodSecurityContext: true
|
||||
# When setting runAsUser to a different value than 0 also set fsGroup to the same value:
|
||||
runAsUser: 1000
|
||||
fsGroup: 1000
|
||||
securityContextCapabilities: {}
|
||||
# drop:
|
||||
# - NET_RAW
|
||||
checkDeprecation: true
|
||||
|
||||
awsSecurityGroupPolicies:
|
||||
enabled: false
|
||||
policies:
|
||||
- name: ""
|
||||
securityGroupIds: []
|
||||
podSelector: {}
|
@ -1,14 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: jenkins-pv
|
||||
namespace: jenkins
|
||||
spec:
|
||||
storageClassName: jenkins-pv
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
capacity:
|
||||
storage: 20Gi
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
hostPath:
|
||||
path: /data/jenkins-volume/
|
@ -1,37 +0,0 @@
|
||||
## Steps taken to deploy Jenkins
|
||||
|
||||
minikube start
|
||||
|
||||
kubectl create namespace jenkins or kubectl create -f jenkins-namespace.yml
|
||||
|
||||
kubectl get namespaces
|
||||
|
||||
helm repo list
|
||||
|
||||
helm repo add jenkinsci https://charts.jenkins.io
|
||||
|
||||
helm repo update
|
||||
|
||||
kubectl apply -f jenkins-volume.yml
|
||||
|
||||
kubectl apply -f jenkins-sa.yml
|
||||
|
||||
chart=jenkinsci/jenkins
|
||||
helm install jenkins -n jenkins -f jenkins-values.yml $chart
|
||||
|
||||
minikube ssh
|
||||
sudo chown -R 1000:1000 /data/jenkins-volume
|
||||
|
||||
kubectl delete pod jenkins-0 -n jenkins
|
||||
|
||||
kubectl get pods -n jenkins -w
|
||||
|
||||
kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo
|
||||
|
||||
kubectl --namespace jenkins port-forward svc/jenkins 8080:8080
|
||||
|
||||
open browser and login to http://localhost:8080
|
||||
|
||||
perform plugin updates
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"vmSize": {
|
||||
"value": "Standard_D2s_v3"
|
||||
},
|
||||
"adminUsername": {
|
||||
"value": "Student"
|
||||
},
|
||||
"adminPassword": {
|
||||
"value": "Pa55w.rd1234"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,162 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"vmSize": {
|
||||
"type": "string",
|
||||
"defaultValue": "Standard_D2s_v3",
|
||||
"metadata": {
|
||||
"description": "VM size"
|
||||
}
|
||||
},
|
||||
"vmName": {
|
||||
"type": "string",
|
||||
"defaultValue": "90day-vm",
|
||||
"metadata": {
|
||||
"description": "VM name Prefix"
|
||||
}
|
||||
},
|
||||
"vmCount": {
|
||||
"type": "int",
|
||||
"defaultValue": 2,
|
||||
"metadata": {
|
||||
"description": "Number of VMs"
|
||||
}
|
||||
},
|
||||
"adminUsername": {
|
||||
"type": "string",
|
||||
"metadata": {
|
||||
"description": "Admin username"
|
||||
}
|
||||
},
|
||||
"adminPassword": {
|
||||
"type": "securestring",
|
||||
"metadata": {
|
||||
"description": "Admin password"
|
||||
}
|
||||
},
|
||||
"virtualNetworkName": {
|
||||
"type": "string",
|
||||
"defaultValue": "90daysofdevops",
|
||||
"metadata": {
|
||||
"description": "Virtual network name"
|
||||
}
|
||||
}
|
||||
},
|
||||
"variables": {
|
||||
"nic": "90daysofdevops",
|
||||
"virtualNetworkName": "[parameters('virtualNetworkName')]",
|
||||
"subnetName": "subnet",
|
||||
"subnet0Name": "subnet0",
|
||||
"subnet1Name": "subnet1",
|
||||
"computeApiVersion": "2018-06-01",
|
||||
"networkApiVersion": "2018-08-01"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"name": "[concat(parameters('vmName'),copyIndex())]",
|
||||
"copy": {
|
||||
"name": "VMcopy",
|
||||
"count": "[parameters('vmCount')]"
|
||||
},
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"apiVersion": "[variables('computeApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Creating VMs",
|
||||
"dependsOn": [
|
||||
"[concat(variables('nic'),copyIndex())]"
|
||||
],
|
||||
"properties": {
|
||||
"osProfile": {
|
||||
"computerName": "[concat(parameters('vmName'),copyIndex())]",
|
||||
"adminUsername": "[parameters('adminUsername')]",
|
||||
"adminPassword": "[parameters('adminPassword')]",
|
||||
"windowsConfiguration": {
|
||||
"provisionVmAgent": "true"
|
||||
}
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "[parameters('vmSize')]"
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2019-Datacenter",
|
||||
"version": "latest"
|
||||
},
|
||||
"osDisk": {
|
||||
"createOption": "fromImage"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"properties": {
|
||||
"primary": true
|
||||
},
|
||||
"id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('nic'),copyIndex()))]"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Network/virtualNetworks",
|
||||
"name": "[variables('virtualNetworkName')]",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Virtual Network",
|
||||
"properties": {
|
||||
"addressSpace": {
|
||||
"addressPrefixes": [
|
||||
"10.40.0.0/22"
|
||||
]
|
||||
},
|
||||
"subnets": [
|
||||
{
|
||||
"name": "[variables('subnet0Name')]",
|
||||
"properties": {
|
||||
"addressPrefix": "10.40.0.0/24"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "[variables('subnet1Name')]",
|
||||
"properties": {
|
||||
"addressPrefix": "10.40.1.0/24"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "[concat(variables('nic'),copyIndex())]",
|
||||
"copy":{
|
||||
"name": "nicCopy",
|
||||
"count": "[parameters('vmCount')]"
|
||||
},
|
||||
"type": "Microsoft.Network/networkInterfaces",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Primary NIC",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]"
|
||||
],
|
||||
"properties": {
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "ipconfig1",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), concat(variables('subnetName'),copyIndex()))]"
|
||||
},
|
||||
"privateIPAllocationMethod": "Dynamic"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": {}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
$rgName = '90DaysOfDevOps'
|
||||
|
||||
New-AzResourceGroupDeployment `
|
||||
-ResourceGroupName $rgName `
|
||||
-TemplateFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\01VirtualNetworking\Mod04_90DaysOfDevOps-vms-loop-template.json `
|
||||
-TemplateParameterFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\01VirtualNetworking\Mod04_90DaysOfDevOps-vms-loop-parameters.json
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"vmSize": {
|
||||
"value": "Standard_D2s_v3"
|
||||
},
|
||||
"adminUsername": {
|
||||
"value": "Student"
|
||||
},
|
||||
"adminPassword": {
|
||||
"value": "Pa55w.rd1234"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,237 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"vmSize": {
|
||||
"type": "string",
|
||||
"defaultValue": "Standard_D2s_v3",
|
||||
"metadata": {
|
||||
"description": "VM size"
|
||||
}
|
||||
},
|
||||
"vmName": {
|
||||
"type": "string",
|
||||
"defaultValue": "90day-vm",
|
||||
"metadata": {
|
||||
"description": "VM name Prefix"
|
||||
}
|
||||
},
|
||||
"vmCount": {
|
||||
"type": "int",
|
||||
"defaultValue": 4,
|
||||
"metadata": {
|
||||
"description": "Number of VMs"
|
||||
}
|
||||
},
|
||||
"adminUsername": {
|
||||
"type": "string",
|
||||
"metadata": {
|
||||
"description": "Admin username"
|
||||
}
|
||||
},
|
||||
"adminPassword": {
|
||||
"type": "securestring",
|
||||
"metadata": {
|
||||
"description": "Admin password"
|
||||
}
|
||||
}
|
||||
},
|
||||
"variables": {
|
||||
"vmExtensionName": "customScriptExtension",
|
||||
"nic": "90day-vm-nic",
|
||||
"virtualNetworkNames": "[createArray('90day-vm-vnet01','90day-vm-vnet01','90day-vm-vnet2','90day-vm-vnet3')]",
|
||||
"virtualNetworkNamestbc": "[createArray('90day-vm-vnet01','90day-vm-vnet2','90day-vm-vnet3')]",
|
||||
"VNetPrefixes":"[createArray('10.60','10.62','10.63')]",
|
||||
"nsgNames": "[createArray('90day-vm-nsg01','90day-vm-nsg01','90day-vm-nsg2','90day-vm-nsg3')]",
|
||||
"nsgNamestbc": "[createArray('90day-vm-nsg01','90day-vm-nsg2','90day-vm-nsg3')]",
|
||||
"subnetName": "subnet",
|
||||
"subnetRefs": "[createArray(0,1,0,0)]",
|
||||
"computeApiVersion": "2018-06-01",
|
||||
"networkApiVersion": "2018-08-01"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"name": "[concat(parameters('vmName'),copyIndex())]",
|
||||
"copy": {
|
||||
"name": "VMcopy",
|
||||
"count": "[parameters('vmCount')]"
|
||||
},
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"apiVersion": "[variables('computeApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Creating VMs",
|
||||
"dependsOn": [
|
||||
"[concat(variables('nic'),copyIndex())]"
|
||||
],
|
||||
"properties": {
|
||||
"osProfile": {
|
||||
"computerName": "[concat(parameters('vmName'),copyIndex())]",
|
||||
"adminUsername": "[parameters('adminUsername')]",
|
||||
"adminPassword": "[parameters('adminPassword')]",
|
||||
"windowsConfiguration": {
|
||||
"provisionVmAgent": "true"
|
||||
}
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "[parameters('vmSize')]"
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2019-Datacenter",
|
||||
"version": "latest"
|
||||
},
|
||||
"osDisk": {
|
||||
"createOption": "fromImage"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"properties": {
|
||||
"primary": true
|
||||
},
|
||||
"id": "[resourceId('Microsoft.Network/networkInterfaces', concat(variables('nic'),copyIndex()))]"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Compute/virtualMachines/extensions",
|
||||
"name": "[concat(concat(parameters('vmName'),copyIndex()), '/', variables('vmExtensionName'))]",
|
||||
"copy": {
|
||||
"name": "Extopy",
|
||||
"count": "[parameters('vmCount')]"
|
||||
},
|
||||
"apiVersion": "[variables('computeApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmName'),copyIndex()))]"
|
||||
],
|
||||
"properties": {
|
||||
"publisher": "Microsoft.Compute",
|
||||
"type": "CustomScriptExtension",
|
||||
"typeHandlerVersion": "1.7",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"settings": {
|
||||
"commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Network/virtualNetworks",
|
||||
"name": "[variables('virtualNetworkNamestbc')[copyIndex()]]",
|
||||
"copy": {
|
||||
"name": "VnetCopy",
|
||||
"count": "[length(variables('virtualNetworkNamestbc'))]"
|
||||
},
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Virtual Network",
|
||||
"properties": {
|
||||
"addressSpace": {
|
||||
"addressPrefixes": [
|
||||
"[concat(variables('VNetPrefixes')[copyIndex()],'.0.0/22')]"
|
||||
]
|
||||
},
|
||||
"subnets": [
|
||||
{
|
||||
"name": "[concat(variables('subnetName'),'0')]",
|
||||
"properties": {
|
||||
"addressPrefix": "[concat(variables('VNetPrefixes')[copyIndex()],'.0.0/24')]"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
},
|
||||
{ "type": "Microsoft.Network/virtualNetworks/subnets",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Virtual Network Subnet for VNet01",
|
||||
"name": "90day-vm-vnet01/subnet1",
|
||||
"properties": {
|
||||
"addressPrefix": "10.60.1.0/24"
|
||||
},
|
||||
"dependsOn": [
|
||||
"Microsoft.Network/virtualNetworks/90day-vm-vnet01"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "[concat(variables('nic'),copyIndex())]",
|
||||
"copy":{
|
||||
"name": "nicCopy",
|
||||
"count": "[parameters('vmCount')]"
|
||||
},
|
||||
"type": "Microsoft.Network/networkInterfaces",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Primary NIC",
|
||||
"dependsOn": [
|
||||
"[variables('nsgNames')[copyindex()]]",
|
||||
"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkNames')[copyIndex()])]"
|
||||
],
|
||||
"properties": {
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "ipconfig1",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkNames')[copyIndex()], concat(variables('subnetName'),variables('subnetRefs')[copyindex()]))]"
|
||||
},
|
||||
"privateIPAllocationMethod": "Dynamic"
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkSecurityGroup": {
|
||||
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgNames')[copyIndex()])]"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "[variables('nsgNamestbc')[copyIndex()]]",
|
||||
"copy": {
|
||||
"name": "nsgCopy",
|
||||
"count": 3
|
||||
},
|
||||
"type": "Microsoft.Network/networkSecurityGroups",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Network Security Group (NSG) for Primary NIC",
|
||||
"properties": {
|
||||
"securityRules": [
|
||||
{
|
||||
"name": "default-allow-rdp",
|
||||
"properties": {
|
||||
"priority": 1000,
|
||||
"sourceAddressPrefix": "*",
|
||||
"protocol": "Tcp",
|
||||
"destinationPortRange": "3389",
|
||||
"access": "Allow",
|
||||
"direction": "Inbound",
|
||||
"sourcePortRange": "*",
|
||||
"destinationAddressPrefix": "*"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "default-allow-http",
|
||||
"properties": {
|
||||
"priority": 1100,
|
||||
"sourceAddressPrefix": "*",
|
||||
"protocol": "Tcp",
|
||||
"destinationPortRange": "80",
|
||||
"access": "Allow",
|
||||
"direction": "Inbound",
|
||||
"sourcePortRange": "*",
|
||||
"destinationAddressPrefix": "*"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": {}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
$rgName = '90DaysOfDevOps'
|
||||
|
||||
New-AzResourceGroupDeployment `
|
||||
-ResourceGroupName $rgName `
|
||||
-TemplateFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\02TrafficManagement\Mod06_90DaysOfDevOps-vms-loop-template.json `
|
||||
-TemplateParameterFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\02TrafficManagement\Mod06_90DaysOfDevOps-vms-loop-parameters.json
|
||||
|
||||
$location = (Get-AzResourceGroup -ResourceGroupName $rgName).location
|
||||
$vmNames = (Get-AzVM -ResourceGroupName $rgName).Name
|
||||
|
||||
foreach ($vmName in $vmNames) {
|
||||
Set-AzVMExtension `
|
||||
-ResourceGroupName $rgName `
|
||||
-Location $location `
|
||||
-VMName $vmName `
|
||||
-Name 'networkWatcherAgent' `
|
||||
-Publisher 'Microsoft.Azure.NetworkWatcher' `
|
||||
-Type 'NetworkWatcherAgentWindows' `
|
||||
-TypeHandlerVersion '1.4'
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Microsoft
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"vmSize": {
|
||||
"value": "Standard_D2s_v3"
|
||||
},
|
||||
"adminUsername": {
|
||||
"value": "Student"
|
||||
},
|
||||
"adminPassword": {
|
||||
"value": "Pa55w.rd1234"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,172 +0,0 @@
|
||||
{
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"vmSize": {
|
||||
"type": "string",
|
||||
"defaultValue": "Standard_D2s_v3",
|
||||
"metadata": {
|
||||
"description": "Virtual machine size"
|
||||
}
|
||||
},
|
||||
"adminUsername": {
|
||||
"type": "string",
|
||||
"metadata": {
|
||||
"description": "Admin username"
|
||||
}
|
||||
},
|
||||
"adminPassword": {
|
||||
"type": "securestring",
|
||||
"metadata": {
|
||||
"description": "Admin password"
|
||||
}
|
||||
}
|
||||
},
|
||||
"variables": {
|
||||
"vmName": "90Days-vm0",
|
||||
"nicName": "90Days-nic0",
|
||||
"virtualNetworkName": "90Days-vnet0",
|
||||
"publicIPAddressName": "90Days-pip0",
|
||||
"nsgName": "90Days-nsg0",
|
||||
"vnetIpPrefix": "10.70.0.0/22",
|
||||
"subnetIpPrefix": "10.70.0.0/24",
|
||||
"subnetName": "subnet0",
|
||||
"subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]",
|
||||
"computeApiVersion": "2018-06-01",
|
||||
"networkApiVersion": "2018-08-01"
|
||||
},
|
||||
"resources": [
|
||||
{
|
||||
"name": "[variables('vmName')]",
|
||||
"type": "Microsoft.Compute/virtualMachines",
|
||||
"apiVersion": "[variables('computeApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"dependsOn": [
|
||||
"[variables('nicName')]"
|
||||
],
|
||||
"properties": {
|
||||
"osProfile": {
|
||||
"computerName": "[variables('vmName')]",
|
||||
"adminUsername": "[parameters('adminUsername')]",
|
||||
"adminPassword": "[parameters('adminPassword')]",
|
||||
"windowsConfiguration": {
|
||||
"provisionVmAgent": "true"
|
||||
}
|
||||
},
|
||||
"hardwareProfile": {
|
||||
"vmSize": "[parameters('vmSize')]"
|
||||
},
|
||||
"storageProfile": {
|
||||
"imageReference": {
|
||||
"publisher": "MicrosoftWindowsServer",
|
||||
"offer": "WindowsServer",
|
||||
"sku": "2019-Datacenter",
|
||||
"version": "latest"
|
||||
},
|
||||
"osDisk": {
|
||||
"createOption": "fromImage"
|
||||
},
|
||||
"dataDisks": []
|
||||
},
|
||||
"networkProfile": {
|
||||
"networkInterfaces": [
|
||||
{
|
||||
"properties": {
|
||||
"primary": true
|
||||
},
|
||||
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Microsoft.Network/virtualNetworks",
|
||||
"name": "[variables('virtualNetworkName')]",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Virtual Network",
|
||||
"properties": {
|
||||
"addressSpace": {
|
||||
"addressPrefixes": [
|
||||
"[variables('vnetIpPrefix')]"
|
||||
]
|
||||
},
|
||||
"subnets": [
|
||||
{
|
||||
"name": "[variables('subnetName')]",
|
||||
"properties": {
|
||||
"addressPrefix": "[variables('subnetIpPrefix')]"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "[variables('nicName')]",
|
||||
"type": "Microsoft.Network/networkInterfaces",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Primary NIC",
|
||||
"dependsOn": [
|
||||
"[variables('publicIpAddressName')]",
|
||||
"[variables('nsgName')]",
|
||||
"[variables('virtualNetworkName')]"
|
||||
],
|
||||
"properties": {
|
||||
"ipConfigurations": [
|
||||
{
|
||||
"name": "ipconfig1",
|
||||
"properties": {
|
||||
"subnet": {
|
||||
"id": "[variables('subnetRef')]"
|
||||
},
|
||||
"privateIPAllocationMethod": "Dynamic",
|
||||
"publicIpAddress": {
|
||||
"id": "[resourceId('Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"networkSecurityGroup": {
|
||||
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "[variables('publicIpAddressName')]",
|
||||
"type": "Microsoft.Network/publicIpAddresses",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Public IP for Primary NIC",
|
||||
"properties": {
|
||||
"publicIpAllocationMethod": "Dynamic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "[variables('nsgName')]",
|
||||
"type": "Microsoft.Network/networkSecurityGroups",
|
||||
"apiVersion": "[variables('networkApiVersion')]",
|
||||
"location": "[resourceGroup().location]",
|
||||
"comments": "Network Security Group (NSG) for Primary NIC",
|
||||
"properties": {
|
||||
"securityRules": [
|
||||
{
|
||||
"name": "default-allow-rdp",
|
||||
"properties": {
|
||||
"priority": 1000,
|
||||
"sourceAddressPrefix": "*",
|
||||
"protocol": "Tcp",
|
||||
"destinationPortRange": "3389",
|
||||
"access": "Allow",
|
||||
"direction": "Inbound",
|
||||
"sourcePortRange": "*",
|
||||
"destinationAddressPrefix": "*"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": {}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
$rgName = '90DaysOfDevOps'
|
||||
|
||||
New-AzResourceGroupDeployment `
|
||||
-ResourceGroupName $rgName `
|
||||
-TemplateFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\03Storage\Mod07_90DaysOfDevOps-vm-template.json `
|
||||
-TemplateParameterFile C:\Users\micha\demo\90DaysOfDevOps\Days\Cloud\03Storage\Mod07_90DaysOfDevOps-vm-parameters.json `
|
||||
-AsJob
|
@ -1,7 +0,0 @@
|
||||
$rgName = '90DaysOfDevOps'
|
||||
|
||||
$webapp = Get-AzWebApp -ResourceGroupName $rgName
|
||||
|
||||
|
||||
#The following following will start an infinite loop that sends the HTTP requests to the web app
|
||||
while ($true) { Invoke-WebRequest -Uri $webapp.DefaultHostName }
|
48
2022/Days/Configmgmt/Vagrantfile
vendored
48
2022/Days/Configmgmt/Vagrantfile
vendored
@ -1,48 +0,0 @@
|
||||
Vagrant.configure("2") do |config|
|
||||
servers=[
|
||||
{
|
||||
:hostname => "db01",
|
||||
:box => "bento/ubuntu-21.10",
|
||||
:ip => "192.168.169.130",
|
||||
:ssh_port => '2210'
|
||||
},
|
||||
{
|
||||
:hostname => "web01",
|
||||
:box => "bento/ubuntu-21.10",
|
||||
:ip => "192.168.169.131",
|
||||
:ssh_port => '2211'
|
||||
},
|
||||
{
|
||||
:hostname => "web02",
|
||||
:box => "bento/ubuntu-21.10",
|
||||
:ip => "192.168.169.132",
|
||||
:ssh_port => '2212'
|
||||
},
|
||||
{
|
||||
:hostname => "loadbalancer",
|
||||
:box => "bento/ubuntu-21.10",
|
||||
:ip => "192.168.169.134",
|
||||
:ssh_port => '2213'
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
config.vm.base_address = 600
|
||||
|
||||
servers.each do |machine|
|
||||
|
||||
config.vm.define machine[:hostname] do |node|
|
||||
node.vm.box = machine[:box]
|
||||
node.vm.hostname = machine[:hostname]
|
||||
|
||||
node.vm.network :public_network, bridge: "Intel(R) Ethernet Connection (7) I219-V", ip: machine[:ip]
|
||||
node.vm.network "forwarded_port", guest: 22, host: machine[:ssh_port], id: "ssh"
|
||||
|
||||
node.vm.provider :virtualbox do |v|
|
||||
v.customize ["modifyvm", :id, "--memory", 2048]
|
||||
v.customize ["modifyvm", :id, "--name", machine[:hostname]]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -1,36 +0,0 @@
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
http_port: 8000
|
||||
https_port: 4443
|
||||
html_welcome_msg: "Hello 90DaysOfDevOps"
|
||||
tasks:
|
||||
- name: ensure apache is at the latest version
|
||||
apt:
|
||||
name: apache2
|
||||
state: latest
|
||||
|
||||
- name: write the apache2 ports.conf config file
|
||||
template:
|
||||
src: templates/ports.conf.j2
|
||||
dest: /etc/apache2/ports.conf
|
||||
notify:
|
||||
- restart apache
|
||||
|
||||
- name: write a basic index.html file
|
||||
template:
|
||||
src: templates/index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
notify:
|
||||
- restart apache
|
||||
|
||||
- name: ensure apache is running
|
||||
service:
|
||||
name: apache2
|
||||
state: started
|
||||
|
||||
handlers:
|
||||
- name: restart apache
|
||||
service:
|
||||
name: apache2
|
||||
state: restarted
|
@ -1,5 +0,0 @@
|
||||
<html>
|
||||
|
||||
<h1>{{ html_welcome_msg }}</h1>
|
||||
|
||||
</html>
|
@ -1,16 +0,0 @@
|
||||
|
||||
# If you just change the port or add more ports here, you will likely also
|
||||
# have to change the VirtualHost statement in
|
||||
# /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
Listen {{ http_port }}
|
||||
|
||||
<IfModule ssl_module>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_gnutls.c>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
@ -1,4 +0,0 @@
|
||||
- name: restart apache
|
||||
service:
|
||||
name: apache2
|
||||
state: restarted
|
@ -1,11 +0,0 @@
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
http_port: 8000
|
||||
https_port: 4443
|
||||
html_welcome_msg: "Hello 90DaysOfDevOps - Welcome to Day 66!"
|
||||
tasks:
|
||||
- import_tasks: tasks/apache2_install.yml
|
||||
|
||||
handlers:
|
||||
- import_tasks: handlers/main.yml
|
@ -1,18 +0,0 @@
|
||||
- name: ensure apache is at the latest version
|
||||
apt: name=apache2 state=latest
|
||||
|
||||
- name: write the apache2 ports.conf config file
|
||||
template: src=templates/ports.conf.j2 dest=/etc/apache2/ports.conf
|
||||
notify: restart apache
|
||||
|
||||
- name: write a basic index.html file
|
||||
template:
|
||||
src: templates/index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
notify:
|
||||
- restart apache
|
||||
|
||||
- name: ensure apache is running
|
||||
service:
|
||||
name: apache2
|
||||
state: started
|
@ -1,5 +0,0 @@
|
||||
<html>
|
||||
|
||||
<h1>{{ html_welcome_msg }}</h1>
|
||||
|
||||
</html>
|
@ -1,16 +0,0 @@
|
||||
|
||||
# If you just change the port or add more ports here, you will likely also
|
||||
# have to change the VirtualHost statement in
|
||||
# /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
Listen {{ http_port }}
|
||||
|
||||
<IfModule ssl_module>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_gnutls.c>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
@ -1,8 +0,0 @@
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
http_port: 8000
|
||||
https_port: 4443
|
||||
html_welcome_msg: "Hello 90DaysOfDevOps - Welcome to Day 66!"
|
||||
roles:
|
||||
- apache2
|
@ -1,29 +0,0 @@
|
||||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
@ -1,38 +0,0 @@
|
||||
Role Name
|
||||
=========
|
||||
|
||||
A brief description of the role goes here.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/apache2
|
@ -1,4 +0,0 @@
|
||||
- name: restart apache
|
||||
service:
|
||||
name: apache2
|
||||
state: restarted
|
@ -1,52 +0,0 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.1
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
@ -1,18 +0,0 @@
|
||||
- name: ensure apache is at the latest version
|
||||
apt: name=apache2 state=latest
|
||||
|
||||
- name: write the apache2 ports.conf config file
|
||||
template: src=templates/ports.conf.j2 dest=/etc/apache2/ports.conf
|
||||
notify: restart apache
|
||||
|
||||
- name: write a basic index.html file
|
||||
template:
|
||||
src: templates/index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
notify:
|
||||
- restart apache
|
||||
|
||||
- name: ensure apache is running
|
||||
service:
|
||||
name: apache2
|
||||
state: started
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
# tasks file for roles/apache2
|
||||
- import_tasks: apache2_install.yml
|
@ -1,5 +0,0 @@
|
||||
<html>
|
||||
|
||||
<h1>{{ html_welcome_msg }}</h1>
|
||||
|
||||
</html>
|
@ -1,16 +0,0 @@
|
||||
|
||||
# If you just change the port or add more ports here, you will likely also
|
||||
# have to change the VirtualHost statement in
|
||||
# /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
Listen {{ http_port }}
|
||||
|
||||
<IfModule ssl_module>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_gnutls.c>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
@ -1,2 +0,0 @@
|
||||
localhost
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- roles/apache2
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# vars file for roles/apache2
|
@ -1,15 +0,0 @@
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
http_port: 8000
|
||||
https_port: 4443
|
||||
html_welcome_msg: "Hello 90DaysOfDevOps - Welcome to Day 66!"
|
||||
roles:
|
||||
- common
|
||||
- apache2
|
||||
|
||||
- hosts: proxy
|
||||
become: yes
|
||||
roles:
|
||||
- common
|
||||
- nginx
|
@ -1,29 +0,0 @@
|
||||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
@ -1,38 +0,0 @@
|
||||
Role Name
|
||||
=========
|
||||
|
||||
A brief description of the role goes here.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/apache2
|
@ -1,4 +0,0 @@
|
||||
- name: restart apache
|
||||
service:
|
||||
name: apache2
|
||||
state: restarted
|
@ -1,52 +0,0 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.1
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
@ -1,18 +0,0 @@
|
||||
- name: ensure apache is at the latest version
|
||||
apt: name=apache2 state=latest
|
||||
|
||||
- name: write the apache2 ports.conf config file
|
||||
template: src=templates/ports.conf.j2 dest=/etc/apache2/ports.conf
|
||||
notify: restart apache
|
||||
|
||||
- name: write a basic index.html file
|
||||
template:
|
||||
src: templates/index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
notify:
|
||||
- restart apache
|
||||
|
||||
- name: ensure apache is running
|
||||
service:
|
||||
name: apache2
|
||||
state: started
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
# tasks file for roles/apache2
|
||||
- import_tasks: apache2_install.yml
|
@ -1,5 +0,0 @@
|
||||
<html>
|
||||
|
||||
<h1>{{ html_welcome_msg }}</h1>
|
||||
|
||||
</html>
|
@ -1,16 +0,0 @@
|
||||
|
||||
# If you just change the port or add more ports here, you will likely also
|
||||
# have to change the VirtualHost statement in
|
||||
# /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
Listen {{ http_port }}
|
||||
|
||||
<IfModule ssl_module>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_gnutls.c>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
@ -1,2 +0,0 @@
|
||||
localhost
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- roles/apache2
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# vars file for roles/apache2
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/common
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# handlers file for roles/common
|
@ -1,52 +0,0 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.1
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
@ -1,6 +0,0 @@
|
||||
- name: "Install Common packages"
|
||||
apt: name={{ item }} state=latest
|
||||
with_items:
|
||||
- neofetch
|
||||
- tree
|
||||
- figlet
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
# tasks file for roles/common
|
||||
- import_tasks: install_tools.yml
|
@ -1,2 +0,0 @@
|
||||
localhost
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- roles/common
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# vars file for roles/common
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/nginx
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
# handlers file for roles/nginx
|
||||
- name: restart nginx
|
||||
service: name=nginx state=restarted
|
@ -1,52 +0,0 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.1
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
@ -1,8 +0,0 @@
|
||||
- name: Deploy Nginx sites configuration
|
||||
template:
|
||||
src: mysite.j2
|
||||
dest: "/etc/nginx/sites-enabled/mysite"
|
||||
notify: restart nginx
|
||||
|
||||
- name: Remove defaults
|
||||
file: path="/etc/nginx/sites-enabled/default" state=absent
|
@ -1,4 +0,0 @@
|
||||
- name: "Install Nginx packages"
|
||||
apt:
|
||||
name: nginx
|
||||
state: present
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
# tasks file for roles/nginx
|
||||
- import_tasks: install_packages.yml
|
||||
- import_tasks: configure_nginx.yml
|
@ -1,12 +0,0 @@
|
||||
upstream webservers {
|
||||
server 192.168.169.131:8000;
|
||||
server 192.168.169.132:8000;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
proxy_pass http://webservers;
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
localhost
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- roles/nginx
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# vars file for roles/nginx
|
@ -1,990 +0,0 @@
|
||||
loadbalancer | SUCCESS => {
|
||||
"ansible_facts": {
|
||||
"ansible_all_ipv4_addresses": [
|
||||
"192.168.169.134",
|
||||
"10.0.2.15"
|
||||
],
|
||||
"ansible_all_ipv6_addresses": [
|
||||
"fe80::a00:27ff:fe58:d805",
|
||||
"fe80::a00:27ff:fece:5875"
|
||||
],
|
||||
"ansible_apparmor": {
|
||||
"status": "enabled"
|
||||
},
|
||||
"ansible_architecture": "x86_64",
|
||||
"ansible_bios_date": "12/01/2006",
|
||||
"ansible_bios_vendor": "innotek GmbH",
|
||||
"ansible_bios_version": "VirtualBox",
|
||||
"ansible_board_asset_tag": "NA",
|
||||
"ansible_board_name": "VirtualBox",
|
||||
"ansible_board_serial": "NA",
|
||||
"ansible_board_vendor": "Oracle Corporation",
|
||||
"ansible_board_version": "1.2",
|
||||
"ansible_chassis_asset_tag": "NA",
|
||||
"ansible_chassis_serial": "NA",
|
||||
"ansible_chassis_vendor": "Oracle Corporation",
|
||||
"ansible_chassis_version": "NA",
|
||||
"ansible_cmdline": {
|
||||
"BOOT_IMAGE": "/vmlinuz-5.13.0-22-generic",
|
||||
"biosdevname": "0",
|
||||
"net.ifnames": "0",
|
||||
"ro": true,
|
||||
"root": "/dev/mapper/ubuntu--vg-ubuntu--lv"
|
||||
},
|
||||
"ansible_date_time": {
|
||||
"date": "2022-03-08",
|
||||
"day": "08",
|
||||
"epoch": "1646732599",
|
||||
"epoch_int": "1646732599",
|
||||
"hour": "09",
|
||||
"iso8601": "2022-03-08T09:43:19Z",
|
||||
"iso8601_basic": "20220308T094319450693",
|
||||
"iso8601_basic_short": "20220308T094319",
|
||||
"iso8601_micro": "2022-03-08T09:43:19.450693Z",
|
||||
"minute": "43",
|
||||
"month": "03",
|
||||
"second": "19",
|
||||
"time": "09:43:19",
|
||||
"tz": "UTC",
|
||||
"tz_dst": "UTC",
|
||||
"tz_offset": "+0000",
|
||||
"weekday": "Tuesday",
|
||||
"weekday_number": "2",
|
||||
"weeknumber": "10",
|
||||
"year": "2022"
|
||||
},
|
||||
"ansible_default_ipv4": {
|
||||
"address": "10.0.2.15",
|
||||
"alias": "eth0",
|
||||
"broadcast": "10.0.2.255",
|
||||
"gateway": "10.0.2.2",
|
||||
"interface": "eth0",
|
||||
"macaddress": "08:00:27:ce:58:75",
|
||||
"mtu": 1500,
|
||||
"netmask": "255.255.255.0",
|
||||
"network": "10.0.2.0",
|
||||
"type": "ether"
|
||||
},
|
||||
"ansible_default_ipv6": {},
|
||||
"ansible_device_links": {
|
||||
"ids": {
|
||||
"dm-0": [
|
||||
"dm-name-ubuntu--vg-ubuntu--lv",
|
||||
"dm-uuid-LVM-Rh9IL87P5c3bFZDEZsSB1HwoQzIYdJJ9MHC0hk6VL2FQradVhN635nSZ2UK0hIjP"
|
||||
],
|
||||
"sda": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e"
|
||||
],
|
||||
"sda1": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1"
|
||||
],
|
||||
"sda2": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2"
|
||||
],
|
||||
"sda3": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3",
|
||||
"lvm-pv-uuid-Xe775U-TJap-8U2Y-aVya-vwHl-yIu6-jOcce8",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3"
|
||||
]
|
||||
},
|
||||
"labels": {},
|
||||
"masters": {
|
||||
"sda3": [
|
||||
"dm-0"
|
||||
]
|
||||
},
|
||||
"uuids": {
|
||||
"dm-0": [
|
||||
"e9eefc7d-c837-4b64-9db4-6d35d0c65475"
|
||||
],
|
||||
"sda2": [
|
||||
"3262acd9-cc62-4400-82ff-f33a76c3d31c"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ansible_devices": {
|
||||
"dm-0": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [
|
||||
"dm-name-ubuntu--vg-ubuntu--lv",
|
||||
"dm-uuid-LVM-Rh9IL87P5c3bFZDEZsSB1HwoQzIYdJJ9MHC0hk6VL2FQradVhN635nSZ2UK0hIjP"
|
||||
],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": [
|
||||
"e9eefc7d-c837-4b64-9db4-6d35d0c65475"
|
||||
]
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "",
|
||||
"sectors": "66052096",
|
||||
"sectorsize": "512",
|
||||
"size": "31.50 GB",
|
||||
"support_discard": "0",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop0": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "126632",
|
||||
"sectorsize": "512",
|
||||
"size": "61.83 MB",
|
||||
"support_discard": "4096",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop1": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "126752",
|
||||
"sectorsize": "512",
|
||||
"size": "61.89 MB",
|
||||
"support_discard": "4096",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop2": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "149872",
|
||||
"sectorsize": "512",
|
||||
"size": "73.18 MB",
|
||||
"support_discard": "4096",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop3": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "89264",
|
||||
"sectorsize": "512",
|
||||
"size": "43.59 MB",
|
||||
"support_discard": "4096",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop4": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "159968",
|
||||
"sectorsize": "512",
|
||||
"size": "78.11 MB",
|
||||
"support_discard": "4096",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop5": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "0",
|
||||
"sectorsize": "512",
|
||||
"size": "0.00 Bytes",
|
||||
"support_discard": "4096",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop6": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "0",
|
||||
"sectorsize": "512",
|
||||
"size": "0.00 Bytes",
|
||||
"support_discard": "0",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"loop7": {
|
||||
"holders": [],
|
||||
"host": "",
|
||||
"links": {
|
||||
"ids": [],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": null,
|
||||
"partitions": {},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "0",
|
||||
"sectorsize": "512",
|
||||
"size": "0.00 Bytes",
|
||||
"support_discard": "0",
|
||||
"vendor": null,
|
||||
"virtual": 1
|
||||
},
|
||||
"sda": {
|
||||
"holders": [],
|
||||
"host": "SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)",
|
||||
"links": {
|
||||
"ids": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e"
|
||||
],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"model": "VBOX HARDDISK",
|
||||
"partitions": {
|
||||
"sda1": {
|
||||
"holders": [],
|
||||
"links": {
|
||||
"ids": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part1"
|
||||
],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": []
|
||||
},
|
||||
"sectors": "2048",
|
||||
"sectorsize": 512,
|
||||
"size": "1.00 MB",
|
||||
"start": "2048",
|
||||
"uuid": null
|
||||
},
|
||||
"sda2": {
|
||||
"holders": [],
|
||||
"links": {
|
||||
"ids": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part2"
|
||||
],
|
||||
"labels": [],
|
||||
"masters": [],
|
||||
"uuids": [
|
||||
"3262acd9-cc62-4400-82ff-f33a76c3d31c"
|
||||
]
|
||||
},
|
||||
"sectors": "2097152",
|
||||
"sectorsize": 512,
|
||||
"size": "1.00 GB",
|
||||
"start": "4096",
|
||||
"uuid": "3262acd9-cc62-4400-82ff-f33a76c3d31c"
|
||||
},
|
||||
"sda3": {
|
||||
"holders": [
|
||||
"ubuntu--vg-ubuntu--lv"
|
||||
],
|
||||
"links": {
|
||||
"ids": [
|
||||
"ata-VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3",
|
||||
"lvm-pv-uuid-Xe775U-TJap-8U2Y-aVya-vwHl-yIu6-jOcce8",
|
||||
"scsi-0ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3",
|
||||
"scsi-1ATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3",
|
||||
"scsi-SATA_VBOX_HARDDISK_VBcfd14ab3-bc606f3e-part3"
|
||||
],
|
||||
"labels": [],
|
||||
"masters": [
|
||||
"dm-0"
|
||||
],
|
||||
"uuids": []
|
||||
},
|
||||
"sectors": "132114432",
|
||||
"sectorsize": 512,
|
||||
"size": "63.00 GB",
|
||||
"start": "2101248",
|
||||
"uuid": null
|
||||
}
|
||||
},
|
||||
"removable": "0",
|
||||
"rotational": "1",
|
||||
"sas_address": null,
|
||||
"sas_device_handle": null,
|
||||
"scheduler_mode": "mq-deadline",
|
||||
"sectors": "134217728",
|
||||
"sectorsize": "512",
|
||||
"size": "64.00 GB",
|
||||
"support_discard": "0",
|
||||
"vendor": "ATA",
|
||||
"virtual": 1
|
||||
}
|
||||
},
|
||||
"ansible_distribution": "Ubuntu",
|
||||
"ansible_distribution_file_parsed": true,
|
||||
"ansible_distribution_file_path": "/etc/os-release",
|
||||
"ansible_distribution_file_variety": "Debian",
|
||||
"ansible_distribution_major_version": "21",
|
||||
"ansible_distribution_release": "impish",
|
||||
"ansible_distribution_version": "21.10",
|
||||
"ansible_dns": {
|
||||
"nameservers": [
|
||||
"127.0.0.53"
|
||||
],
|
||||
"options": {
|
||||
"edns0": true,
|
||||
"trust-ad": true
|
||||
},
|
||||
"search": [
|
||||
"."
|
||||
]
|
||||
},
|
||||
"ansible_domain": "",
|
||||
"ansible_effective_group_id": 1000,
|
||||
"ansible_effective_user_id": 1000,
|
||||
"ansible_env": {
|
||||
"HOME": "/home/vagrant",
|
||||
"LANG": "en_US.UTF-8",
|
||||
"LOGNAME": "vagrant",
|
||||
"MOTD_SHOWN": "pam",
|
||||
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin",
|
||||
"PWD": "/home/vagrant",
|
||||
"SHELL": "/bin/bash",
|
||||
"SHLVL": "0",
|
||||
"SSH_CLIENT": "192.168.169.5 59559 22",
|
||||
"SSH_CONNECTION": "192.168.169.5 59559 192.168.169.134 22",
|
||||
"SSH_TTY": "/dev/pts/0",
|
||||
"TERM": "xterm-256color",
|
||||
"USER": "vagrant",
|
||||
"XDG_RUNTIME_DIR": "/run/user/1000",
|
||||
"XDG_SESSION_CLASS": "user",
|
||||
"XDG_SESSION_ID": "31",
|
||||
"XDG_SESSION_TYPE": "tty",
|
||||
"_": "/bin/sh"
|
||||
},
|
||||
"ansible_eth0": {
|
||||
"active": true,
|
||||
"device": "eth0",
|
||||
"features": {
|
||||
"esp_hw_offload": "off [fixed]",
|
||||
"esp_tx_csum_hw_offload": "off [fixed]",
|
||||
"fcoe_mtu": "off [fixed]",
|
||||
"generic_receive_offload": "on",
|
||||
"generic_segmentation_offload": "on",
|
||||
"highdma": "off [fixed]",
|
||||
"hsr_dup_offload": "off [fixed]",
|
||||
"hsr_fwd_offload": "off [fixed]",
|
||||
"hsr_tag_ins_offload": "off [fixed]",
|
||||
"hsr_tag_rm_offload": "off [fixed]",
|
||||
"hw_tc_offload": "off [fixed]",
|
||||
"l2_fwd_offload": "off [fixed]",
|
||||
"large_receive_offload": "off [fixed]",
|
||||
"loopback": "off [fixed]",
|
||||
"macsec_hw_offload": "off [fixed]",
|
||||
"netns_local": "off [fixed]",
|
||||
"ntuple_filters": "off [fixed]",
|
||||
"receive_hashing": "off [fixed]",
|
||||
"rx_all": "off",
|
||||
"rx_checksumming": "off",
|
||||
"rx_fcs": "off",
|
||||
"rx_gro_hw": "off [fixed]",
|
||||
"rx_gro_list": "off",
|
||||
"rx_udp_gro_forwarding": "off",
|
||||
"rx_udp_tunnel_port_offload": "off [fixed]",
|
||||
"rx_vlan_filter": "on [fixed]",
|
||||
"rx_vlan_offload": "on",
|
||||
"rx_vlan_stag_filter": "off [fixed]",
|
||||
"rx_vlan_stag_hw_parse": "off [fixed]",
|
||||
"scatter_gather": "on",
|
||||
"tcp_segmentation_offload": "on",
|
||||
"tls_hw_record": "off [fixed]",
|
||||
"tls_hw_rx_offload": "off [fixed]",
|
||||
"tls_hw_tx_offload": "off [fixed]",
|
||||
"tx_checksum_fcoe_crc": "off [fixed]",
|
||||
"tx_checksum_ip_generic": "on",
|
||||
"tx_checksum_ipv4": "off [fixed]",
|
||||
"tx_checksum_ipv6": "off [fixed]",
|
||||
"tx_checksum_sctp": "off [fixed]",
|
||||
"tx_checksumming": "on",
|
||||
"tx_esp_segmentation": "off [fixed]",
|
||||
"tx_fcoe_segmentation": "off [fixed]",
|
||||
"tx_gre_csum_segmentation": "off [fixed]",
|
||||
"tx_gre_segmentation": "off [fixed]",
|
||||
"tx_gso_list": "off [fixed]",
|
||||
"tx_gso_partial": "off [fixed]",
|
||||
"tx_gso_robust": "off [fixed]",
|
||||
"tx_ipxip4_segmentation": "off [fixed]",
|
||||
"tx_ipxip6_segmentation": "off [fixed]",
|
||||
"tx_lockless": "off [fixed]",
|
||||
"tx_nocache_copy": "off",
|
||||
"tx_scatter_gather": "on",
|
||||
"tx_scatter_gather_fraglist": "off [fixed]",
|
||||
"tx_sctp_segmentation": "off [fixed]",
|
||||
"tx_tcp6_segmentation": "off [fixed]",
|
||||
"tx_tcp_ecn_segmentation": "off [fixed]",
|
||||
"tx_tcp_mangleid_segmentation": "off",
|
||||
"tx_tcp_segmentation": "on",
|
||||
"tx_tunnel_remcsum_segmentation": "off [fixed]",
|
||||
"tx_udp_segmentation": "off [fixed]",
|
||||
"tx_udp_tnl_csum_segmentation": "off [fixed]",
|
||||
"tx_udp_tnl_segmentation": "off [fixed]",
|
||||
"tx_vlan_offload": "on [fixed]",
|
||||
"tx_vlan_stag_hw_insert": "off [fixed]",
|
||||
"vlan_challenged": "off [fixed]"
|
||||
},
|
||||
"hw_timestamp_filters": [],
|
||||
"ipv4": {
|
||||
"address": "10.0.2.15",
|
||||
"broadcast": "10.0.2.255",
|
||||
"netmask": "255.255.255.0",
|
||||
"network": "10.0.2.0"
|
||||
},
|
||||
"ipv6": [
|
||||
{
|
||||
"address": "fe80::a00:27ff:fece:5875",
|
||||
"prefix": "64",
|
||||
"scope": "link"
|
||||
}
|
||||
],
|
||||
"macaddress": "08:00:27:ce:58:75",
|
||||
"module": "e1000",
|
||||
"mtu": 1500,
|
||||
"pciid": "0000:00:03.0",
|
||||
"promisc": false,
|
||||
"speed": 1000,
|
||||
"timestamping": [],
|
||||
"type": "ether"
|
||||
},
|
||||
"ansible_eth1": {
|
||||
"active": true,
|
||||
"device": "eth1",
|
||||
"features": {
|
||||
"esp_hw_offload": "off [fixed]",
|
||||
"esp_tx_csum_hw_offload": "off [fixed]",
|
||||
"fcoe_mtu": "off [fixed]",
|
||||
"generic_receive_offload": "on",
|
||||
"generic_segmentation_offload": "on",
|
||||
"highdma": "off [fixed]",
|
||||
"hsr_dup_offload": "off [fixed]",
|
||||
"hsr_fwd_offload": "off [fixed]",
|
||||
"hsr_tag_ins_offload": "off [fixed]",
|
||||
"hsr_tag_rm_offload": "off [fixed]",
|
||||
"hw_tc_offload": "off [fixed]",
|
||||
"l2_fwd_offload": "off [fixed]",
|
||||
"large_receive_offload": "off [fixed]",
|
||||
"loopback": "off [fixed]",
|
||||
"macsec_hw_offload": "off [fixed]",
|
||||
"netns_local": "off [fixed]",
|
||||
"ntuple_filters": "off [fixed]",
|
||||
"receive_hashing": "off [fixed]",
|
||||
"rx_all": "off",
|
||||
"rx_checksumming": "off",
|
||||
"rx_fcs": "off",
|
||||
"rx_gro_hw": "off [fixed]",
|
||||
"rx_gro_list": "off",
|
||||
"rx_udp_gro_forwarding": "off",
|
||||
"rx_udp_tunnel_port_offload": "off [fixed]",
|
||||
"rx_vlan_filter": "on [fixed]",
|
||||
"rx_vlan_offload": "on",
|
||||
"rx_vlan_stag_filter": "off [fixed]",
|
||||
"rx_vlan_stag_hw_parse": "off [fixed]",
|
||||
"scatter_gather": "on",
|
||||
"tcp_segmentation_offload": "on",
|
||||
"tls_hw_record": "off [fixed]",
|
||||
"tls_hw_rx_offload": "off [fixed]",
|
||||
"tls_hw_tx_offload": "off [fixed]",
|
||||
"tx_checksum_fcoe_crc": "off [fixed]",
|
||||
"tx_checksum_ip_generic": "on",
|
||||
"tx_checksum_ipv4": "off [fixed]",
|
||||
"tx_checksum_ipv6": "off [fixed]",
|
||||
"tx_checksum_sctp": "off [fixed]",
|
||||
"tx_checksumming": "on",
|
||||
"tx_esp_segmentation": "off [fixed]",
|
||||
"tx_fcoe_segmentation": "off [fixed]",
|
||||
"tx_gre_csum_segmentation": "off [fixed]",
|
||||
"tx_gre_segmentation": "off [fixed]",
|
||||
"tx_gso_list": "off [fixed]",
|
||||
"tx_gso_partial": "off [fixed]",
|
||||
"tx_gso_robust": "off [fixed]",
|
||||
"tx_ipxip4_segmentation": "off [fixed]",
|
||||
"tx_ipxip6_segmentation": "off [fixed]",
|
||||
"tx_lockless": "off [fixed]",
|
||||
"tx_nocache_copy": "off",
|
||||
"tx_scatter_gather": "on",
|
||||
"tx_scatter_gather_fraglist": "off [fixed]",
|
||||
"tx_sctp_segmentation": "off [fixed]",
|
||||
"tx_tcp6_segmentation": "off [fixed]",
|
||||
"tx_tcp_ecn_segmentation": "off [fixed]",
|
||||
"tx_tcp_mangleid_segmentation": "off",
|
||||
"tx_tcp_segmentation": "on",
|
||||
"tx_tunnel_remcsum_segmentation": "off [fixed]",
|
||||
"tx_udp_segmentation": "off [fixed]",
|
||||
"tx_udp_tnl_csum_segmentation": "off [fixed]",
|
||||
"tx_udp_tnl_segmentation": "off [fixed]",
|
||||
"tx_vlan_offload": "on [fixed]",
|
||||
"tx_vlan_stag_hw_insert": "off [fixed]",
|
||||
"vlan_challenged": "off [fixed]"
|
||||
},
|
||||
"hw_timestamp_filters": [],
|
||||
"ipv4": {
|
||||
"address": "192.168.169.134",
|
||||
"broadcast": "192.168.169.255",
|
||||
"netmask": "255.255.255.0",
|
||||
"network": "192.168.169.0"
|
||||
},
|
||||
"ipv6": [
|
||||
{
|
||||
"address": "fe80::a00:27ff:fe58:d805",
|
||||
"prefix": "64",
|
||||
"scope": "link"
|
||||
}
|
||||
],
|
||||
"macaddress": "08:00:27:58:d8:05",
|
||||
"module": "e1000",
|
||||
"mtu": 1500,
|
||||
"pciid": "0000:00:08.0",
|
||||
"promisc": false,
|
||||
"speed": 1000,
|
||||
"timestamping": [],
|
||||
"type": "ether"
|
||||
},
|
||||
"ansible_fibre_channel_wwn": [],
|
||||
"ansible_fips": false,
|
||||
"ansible_form_factor": "Other",
|
||||
"ansible_fqdn": "loadbalancer",
|
||||
"ansible_hostname": "loadbalancer",
|
||||
"ansible_hostnqn": "",
|
||||
"ansible_interfaces": [
|
||||
"eth0",
|
||||
"lo",
|
||||
"eth1"
|
||||
],
|
||||
"ansible_is_chroot": false,
|
||||
"ansible_iscsi_iqn": "",
|
||||
"ansible_kernel": "5.13.0-22-generic",
|
||||
"ansible_kernel_version": "#22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021",
|
||||
"ansible_lo": {
|
||||
"active": true,
|
||||
"device": "lo",
|
||||
"features": {
|
||||
"esp_hw_offload": "off [fixed]",
|
||||
"esp_tx_csum_hw_offload": "off [fixed]",
|
||||
"fcoe_mtu": "off [fixed]",
|
||||
"generic_receive_offload": "on",
|
||||
"generic_segmentation_offload": "on",
|
||||
"highdma": "on [fixed]",
|
||||
"hsr_dup_offload": "off [fixed]",
|
||||
"hsr_fwd_offload": "off [fixed]",
|
||||
"hsr_tag_ins_offload": "off [fixed]",
|
||||
"hsr_tag_rm_offload": "off [fixed]",
|
||||
"hw_tc_offload": "off [fixed]",
|
||||
"l2_fwd_offload": "off [fixed]",
|
||||
"large_receive_offload": "off [fixed]",
|
||||
"loopback": "on [fixed]",
|
||||
"macsec_hw_offload": "off [fixed]",
|
||||
"netns_local": "on [fixed]",
|
||||
"ntuple_filters": "off [fixed]",
|
||||
"receive_hashing": "off [fixed]",
|
||||
"rx_all": "off [fixed]",
|
||||
"rx_checksumming": "on [fixed]",
|
||||
"rx_fcs": "off [fixed]",
|
||||
"rx_gro_hw": "off [fixed]",
|
||||
"rx_gro_list": "off",
|
||||
"rx_udp_gro_forwarding": "off",
|
||||
"rx_udp_tunnel_port_offload": "off [fixed]",
|
||||
"rx_vlan_filter": "off [fixed]",
|
||||
"rx_vlan_offload": "off [fixed]",
|
||||
"rx_vlan_stag_filter": "off [fixed]",
|
||||
"rx_vlan_stag_hw_parse": "off [fixed]",
|
||||
"scatter_gather": "on",
|
||||
"tcp_segmentation_offload": "on",
|
||||
"tls_hw_record": "off [fixed]",
|
||||
"tls_hw_rx_offload": "off [fixed]",
|
||||
"tls_hw_tx_offload": "off [fixed]",
|
||||
"tx_checksum_fcoe_crc": "off [fixed]",
|
||||
"tx_checksum_ip_generic": "on [fixed]",
|
||||
"tx_checksum_ipv4": "off [fixed]",
|
||||
"tx_checksum_ipv6": "off [fixed]",
|
||||
"tx_checksum_sctp": "on [fixed]",
|
||||
"tx_checksumming": "on",
|
||||
"tx_esp_segmentation": "off [fixed]",
|
||||
"tx_fcoe_segmentation": "off [fixed]",
|
||||
"tx_gre_csum_segmentation": "off [fixed]",
|
||||
"tx_gre_segmentation": "off [fixed]",
|
||||
"tx_gso_list": "on",
|
||||
"tx_gso_partial": "off [fixed]",
|
||||
"tx_gso_robust": "off [fixed]",
|
||||
"tx_ipxip4_segmentation": "off [fixed]",
|
||||
"tx_ipxip6_segmentation": "off [fixed]",
|
||||
"tx_lockless": "on [fixed]",
|
||||
"tx_nocache_copy": "off [fixed]",
|
||||
"tx_scatter_gather": "on [fixed]",
|
||||
"tx_scatter_gather_fraglist": "on [fixed]",
|
||||
"tx_sctp_segmentation": "on",
|
||||
"tx_tcp6_segmentation": "on",
|
||||
"tx_tcp_ecn_segmentation": "on",
|
||||
"tx_tcp_mangleid_segmentation": "on",
|
||||
"tx_tcp_segmentation": "on",
|
||||
"tx_tunnel_remcsum_segmentation": "off [fixed]",
|
||||
"tx_udp_segmentation": "on",
|
||||
"tx_udp_tnl_csum_segmentation": "off [fixed]",
|
||||
"tx_udp_tnl_segmentation": "off [fixed]",
|
||||
"tx_vlan_offload": "off [fixed]",
|
||||
"tx_vlan_stag_hw_insert": "off [fixed]",
|
||||
"vlan_challenged": "on [fixed]"
|
||||
},
|
||||
"hw_timestamp_filters": [],
|
||||
"ipv4": {
|
||||
"address": "127.0.0.1",
|
||||
"broadcast": "",
|
||||
"netmask": "255.0.0.0",
|
||||
"network": "127.0.0.0"
|
||||
},
|
||||
"ipv6": [
|
||||
{
|
||||
"address": "::1",
|
||||
"prefix": "128",
|
||||
"scope": "host"
|
||||
}
|
||||
],
|
||||
"mtu": 65536,
|
||||
"promisc": false,
|
||||
"timestamping": [],
|
||||
"type": "loopback"
|
||||
},
|
||||
"ansible_local": {},
|
||||
"ansible_lsb": {
|
||||
"codename": "impish",
|
||||
"description": "Ubuntu 21.10",
|
||||
"id": "Ubuntu",
|
||||
"major_release": "21",
|
||||
"release": "21.10"
|
||||
},
|
||||
"ansible_machine": "x86_64",
|
||||
"ansible_machine_id": "eb914f2b9b20452a9f22409ce7e2504b",
|
||||
"ansible_memfree_mb": 794,
|
||||
"ansible_memory_mb": {
|
||||
"nocache": {
|
||||
"free": 1756,
|
||||
"used": 221
|
||||
},
|
||||
"real": {
|
||||
"free": 794,
|
||||
"total": 1977,
|
||||
"used": 1183
|
||||
},
|
||||
"swap": {
|
||||
"cached": 0,
|
||||
"free": 1941,
|
||||
"total": 1941,
|
||||
"used": 0
|
||||
}
|
||||
},
|
||||
"ansible_memtotal_mb": 1977,
|
||||
"ansible_mounts": [
|
||||
{
|
||||
"block_available": 6449622,
|
||||
"block_size": 4096,
|
||||
"block_total": 8081868,
|
||||
"block_used": 1632246,
|
||||
"device": "/dev/mapper/ubuntu--vg-ubuntu--lv",
|
||||
"fstype": "ext4",
|
||||
"inode_available": 1980785,
|
||||
"inode_total": 2064384,
|
||||
"inode_used": 83599,
|
||||
"mount": "/",
|
||||
"options": "rw,relatime",
|
||||
"size_available": 26417651712,
|
||||
"size_total": 33103331328,
|
||||
"uuid": "e9eefc7d-c837-4b64-9db4-6d35d0c65475"
|
||||
},
|
||||
{
|
||||
"block_available": 0,
|
||||
"block_size": 131072,
|
||||
"block_total": 495,
|
||||
"block_used": 495,
|
||||
"device": "/dev/loop0",
|
||||
"fstype": "squashfs",
|
||||
"inode_available": 0,
|
||||
"inode_total": 11732,
|
||||
"inode_used": 11732,
|
||||
"mount": "/snap/core20/1169",
|
||||
"options": "ro,nodev,relatime",
|
||||
"size_available": 0,
|
||||
"size_total": 64880640,
|
||||
"uuid": "N/A"
|
||||
},
|
||||
{
|
||||
"block_available": 0,
|
||||
"block_size": 131072,
|
||||
"block_total": 349,
|
||||
"block_used": 349,
|
||||
"device": "/dev/loop3",
|
||||
"fstype": "squashfs",
|
||||
"inode_available": 0,
|
||||
"inode_total": 480,
|
||||
"inode_used": 480,
|
||||
"mount": "/snap/snapd/14978",
|
||||
"options": "ro,nodev,relatime",
|
||||
"size_available": 0,
|
||||
"size_total": 45744128,
|
||||
"uuid": "N/A"
|
||||
},
|
||||
{
|
||||
"block_available": 0,
|
||||
"block_size": 131072,
|
||||
"block_total": 496,
|
||||
"block_used": 496,
|
||||
"device": "/dev/loop1",
|
||||
"fstype": "squashfs",
|
||||
"inode_available": 0,
|
||||
"inode_total": 11777,
|
||||
"inode_used": 11777,
|
||||
"mount": "/snap/core20/1361",
|
||||
"options": "ro,nodev,relatime",
|
||||
"size_available": 0,
|
||||
"size_total": 65011712,
|
||||
"uuid": "N/A"
|
||||
},
|
||||
{
|
||||
"block_available": 0,
|
||||
"block_size": 131072,
|
||||
"block_total": 586,
|
||||
"block_used": 586,
|
||||
"device": "/dev/loop2",
|
||||
"fstype": "squashfs",
|
||||
"inode_available": 0,
|
||||
"inode_total": 806,
|
||||
"inode_used": 806,
|
||||
"mount": "/snap/lxd/21624",
|
||||
"options": "ro,nodev,relatime",
|
||||
"size_available": 0,
|
||||
"size_total": 76808192,
|
||||
"uuid": "N/A"
|
||||
},
|
||||
{
|
||||
"block_available": 0,
|
||||
"block_size": 131072,
|
||||
"block_total": 625,
|
||||
"block_used": 625,
|
||||
"device": "/dev/loop4",
|
||||
"fstype": "squashfs",
|
||||
"inode_available": 0,
|
||||
"inode_total": 812,
|
||||
"inode_used": 812,
|
||||
"mount": "/snap/lxd/22525",
|
||||
"options": "ro,nodev,relatime",
|
||||
"size_available": 0,
|
||||
"size_total": 81920000,
|
||||
"uuid": "N/A"
|
||||
},
|
||||
{
|
||||
"block_available": 216388,
|
||||
"block_size": 4096,
|
||||
"block_total": 249195,
|
||||
"block_used": 32807,
|
||||
"device": "/dev/sda2",
|
||||
"fstype": "ext4",
|
||||
"inode_available": 65224,
|
||||
"inode_total": 65536,
|
||||
"inode_used": 312,
|
||||
"mount": "/boot",
|
||||
"options": "rw,relatime",
|
||||
"size_available": 886325248,
|
||||
"size_total": 1020702720,
|
||||
"uuid": "3262acd9-cc62-4400-82ff-f33a76c3d31c"
|
||||
}
|
||||
],
|
||||
"ansible_nodename": "loadbalancer",
|
||||
"ansible_os_family": "Debian",
|
||||
"ansible_pkg_mgr": "apt",
|
||||
"ansible_proc_cmdline": {
|
||||
"BOOT_IMAGE": "/vmlinuz-5.13.0-22-generic",
|
||||
"biosdevname": "0",
|
||||
"net.ifnames": "0",
|
||||
"ro": true,
|
||||
"root": "/dev/mapper/ubuntu--vg-ubuntu--lv"
|
||||
},
|
||||
"ansible_processor": [
|
||||
"0",
|
||||
"GenuineIntel",
|
||||
"Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz",
|
||||
"1",
|
||||
"GenuineIntel",
|
||||
"Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz"
|
||||
],
|
||||
"ansible_processor_cores": 2,
|
||||
"ansible_processor_count": 1,
|
||||
"ansible_processor_nproc": 2,
|
||||
"ansible_processor_threads_per_core": 1,
|
||||
"ansible_processor_vcpus": 2,
|
||||
"ansible_product_name": "VirtualBox",
|
||||
"ansible_product_serial": "NA",
|
||||
"ansible_product_uuid": "NA",
|
||||
"ansible_product_version": "1.2",
|
||||
"ansible_python": {
|
||||
"executable": "/usr/bin/python3",
|
||||
"has_sslcontext": true,
|
||||
"type": "cpython",
|
||||
"version": {
|
||||
"major": 3,
|
||||
"micro": 7,
|
||||
"minor": 9,
|
||||
"releaselevel": "final",
|
||||
"serial": 0
|
||||
},
|
||||
"version_info": [
|
||||
3,
|
||||
9,
|
||||
7,
|
||||
"final",
|
||||
0
|
||||
]
|
||||
},
|
||||
"ansible_python_version": "3.9.7",
|
||||
"ansible_real_group_id": 1000,
|
||||
"ansible_real_user_id": 1000,
|
||||
"ansible_selinux": {
|
||||
"status": "disabled"
|
||||
},
|
||||
"ansible_selinux_python_present": true,
|
||||
"ansible_service_mgr": "systemd",
|
||||
"ansible_ssh_host_key_dsa_public": "AAAAB3NzaC1kc3MAAACBAJ/GYOfI+NDvgal1rxFqdD/Hjgb3jhhUq+qvNksPruSyGWFsOkC4XDgyx5OrYVwsSvQSp4qPQx2TW9WYE2BD+l+3cxib9hUpSHwUeTlnwG/6cYsBk5Lqffb/MioGX6Prc1K266ffCdgm3RceU8YO5KsVVwS9aGy/U/IofP9MQRfdAAAAFQC5vkDdPiES73kNWkN0pkVGhaiH6QAAAIBLMS/ZaVwN/8HOvAlY3lrvokz82tG/+9p+Ud16n2kVJZoYkS0d7w8oY401K+A46iQXKaxHnK/+yIGLThSKWUSd5ogiJqIcm5A3KrQd9OLHS/hrInQHaBauAqjB1/RvbVfqZxR6zKk0HLqKLQy2pOqXTxgiKBynYTKPQfVsh9O63wAAAIBD1pHD6w3piWVsZx4X29PGdERBXN9JRBqBYc6yJ3wVE0zNUQDcHEzFvxfyvrxqZLCzZU3pnOWEIAPG/VIE3UYcuMEBsgVQuDeMLosVf3jh20NwdafU/7wqUYIbuscBZjQedtjerKsvxLpbkOhIOrKCf3uwgbmty9Nu2cRsynS8Sw==",
|
||||
"ansible_ssh_host_key_dsa_public_keytype": "ssh-dss",
|
||||
"ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA7DyFPFXiwKxtwKifbCQfzbY28EHSs1z6PGK112JuJZVY4AmjehzREF2xX8WcfH3OJez92UWbedRuc3h5ffj14=",
|
||||
"ansible_ssh_host_key_ecdsa_public_keytype": "ecdsa-sha2-nistp256",
|
||||
"ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIBFl4qPZy972bH4Nq4iaE2X5FhGF9zdEG7gxdx/twPar",
|
||||
"ansible_ssh_host_key_ed25519_public_keytype": "ssh-ed25519",
|
||||
"ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABgQC7D6r/j7LOBo0UncMQUUZSwKQeKiewp0YRkmU8/NqUrgLFwMTZWEpFJuWDVOtc1rCILj+LXtjTRzn2fSOBz2f3Hkf7Rj3SGAM1FSXcYkL3Wb/Zwiek6CegHby/SZYLNDMwPjV7mC9d1TpSBVQvrOTGMx8f/swBieNq7lEjM5bbCJS78wLc5Efqg3pTADz9CLhDDdRo8vEhmz/bd/WbSRNchvSZkvOIs3o2NEs+wQ3WOlOrq2wA7tSEhzeIWtZ3FK2XdxRQ7HXTMFw1Tskm2LcY/Oc082n/LvYLiM4tfRbtiV1dPv3UVRJVd6M+xsdaCynS6pKbXxwtfnKA3hvgD+WBYsbDtryVW7ZWPmqfxXe22FhAPecQ044WaDcQvZFbpK/CeGNwURMrSNdbY8uEhfWnvVWPSucZrdoTR3htl/PUTDZMJiyA9NjxqLYt/5PsySMGpcQDWFK0+woh/c1rdwDaE9yriXRUsMkLdfEtAdiKEin9HjeDkeOjVg26jn/AjBk=",
|
||||
"ansible_ssh_host_key_rsa_public_keytype": "ssh-rsa",
|
||||
"ansible_swapfree_mb": 1941,
|
||||
"ansible_swaptotal_mb": 1941,
|
||||
"ansible_system": "Linux",
|
||||
"ansible_system_capabilities": [
|
||||
""
|
||||
],
|
||||
"ansible_system_capabilities_enforced": "True",
|
||||
"ansible_system_vendor": "innotek GmbH",
|
||||
"ansible_uptime_seconds": 58379,
|
||||
"ansible_user_dir": "/home/vagrant",
|
||||
"ansible_user_gecos": "vagrant",
|
||||
"ansible_user_gid": 1000,
|
||||
"ansible_user_id": "vagrant",
|
||||
"ansible_user_shell": "/bin/bash",
|
||||
"ansible_user_uid": 1000,
|
||||
"ansible_userspace_architecture": "x86_64",
|
||||
"ansible_userspace_bits": "64",
|
||||
"ansible_virtualization_role": "guest",
|
||||
"ansible_virtualization_tech_guest": [
|
||||
"virtualbox"
|
||||
],
|
||||
"ansible_virtualization_tech_host": [],
|
||||
"ansible_virtualization_type": "virtualbox",
|
||||
"discovered_interpreter_python": "/usr/bin/python3",
|
||||
"gather_subset": [
|
||||
"all"
|
||||
],
|
||||
"module_setup": true
|
||||
},
|
||||
"changed": false
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
#Dynamic Config for server {{ ansible_facts['nodename'] }}
|
||||
upstream webservers {
|
||||
{% for host in groups['webservers'] %}
|
||||
server {{ hostvars[host]['ansible_facts']['nodename'] }}:8000;
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location / {
|
||||
proxy_pass http://webservers;
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
- hosts: webservers
|
||||
become: yes
|
||||
vars:
|
||||
http_port: 8000
|
||||
https_port: 4443
|
||||
html_welcome_msg: "Hello 90DaysOfDevOps - Welcome to Day 66!"
|
||||
roles:
|
||||
- common
|
||||
- apache2
|
||||
tags: web
|
||||
|
||||
- hosts: proxy
|
||||
become: yes
|
||||
roles:
|
||||
- common
|
||||
- nginx
|
||||
tags: proxy
|
@ -1,29 +0,0 @@
|
||||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
@ -1,38 +0,0 @@
|
||||
Role Name
|
||||
=========
|
||||
|
||||
A brief description of the role goes here.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/apache2
|
@ -1,4 +0,0 @@
|
||||
- name: restart apache
|
||||
service:
|
||||
name: apache2
|
||||
state: restarted
|
@ -1,52 +0,0 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.1
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
@ -1,18 +0,0 @@
|
||||
- name: ensure apache is at the latest version
|
||||
apt: name=apache2 state=latest
|
||||
|
||||
- name: write the apache2 ports.conf config file
|
||||
template: src=templates/ports.conf.j2 dest=/etc/apache2/ports.conf
|
||||
notify: restart apache
|
||||
|
||||
- name: write a basic index.html file
|
||||
template:
|
||||
src: templates/index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
notify:
|
||||
- restart apache
|
||||
|
||||
- name: ensure apache is running
|
||||
service:
|
||||
name: apache2
|
||||
state: started
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
# tasks file for roles/apache2
|
||||
- import_tasks: apache2_install.yml
|
@ -1,5 +0,0 @@
|
||||
<html>
|
||||
|
||||
<h1>{{ html_welcome_msg }}</h1>
|
||||
|
||||
</html>
|
@ -1,16 +0,0 @@
|
||||
|
||||
# If you just change the port or add more ports here, you will likely also
|
||||
# have to change the VirtualHost statement in
|
||||
# /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
Listen {{ http_port }}
|
||||
|
||||
<IfModule ssl_module>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_gnutls.c>
|
||||
Listen {{ https_port }}
|
||||
</IfModule>
|
||||
|
||||
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
@ -1,2 +0,0 @@
|
||||
localhost
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- roles/apache2
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# vars file for roles/apache2
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/common
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# handlers file for roles/common
|
@ -1,52 +0,0 @@
|
||||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.1
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
@ -1,6 +0,0 @@
|
||||
- name: "Install Common packages"
|
||||
apt: name={{ item }} state=latest
|
||||
with_items:
|
||||
- neofetch
|
||||
- tree
|
||||
- figlet
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
# tasks file for roles/common
|
||||
- import_tasks: install_tools.yml
|
@ -1,2 +0,0 @@
|
||||
localhost
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- roles/common
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# vars file for roles/common
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
# defaults file for roles/nginx
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
# handlers file for roles/nginx
|
||||
- name: restart nginx
|
||||
service: name=nginx state=restarted
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user