https://github.com/springerpe/vm-tuning-boshrelease
Bosh release to tune up and customize a VM.
https://github.com/springerpe/vm-tuning-boshrelease
bosh-release resolv sysctl tune users
Last synced: 6 months ago
JSON representation
Bosh release to tune up and customize a VM.
- Host: GitHub
- URL: https://github.com/springerpe/vm-tuning-boshrelease
- Owner: SpringerPE
- License: mit
- Created: 2017-04-02T23:06:50.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-04T15:04:32.000Z (about 9 years ago)
- Last Synced: 2025-01-14T04:44:33.806Z (over 1 year ago)
- Topics: bosh-release, resolv, sysctl, tune, users
- Language: Shell
- Size: 23.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# BOSH Release for VM fine tuning
The purpose of this release is provide a way to fine tune and customize a VM.
Capabilities of the jobs:
* `users` job manages the users on the server. It allows defining several public keys,
the password, uid, ssh and sudo access, shell, the profile and a way to disable a user.
* `sysctl` manages the sys settings on the system, starting the job will apply the
new settings defined on the properties and stopping will restore the orginal settings
on the system.
* `scheduler` defines udev rules to manage the IO scheduler, global default or per device
* `resolvconf` job manages domain, search and options for the dns resolver. See
resolv.conf manual to define the options.
* `login_banner` manages the content of the file /etc/issue.net. There are
some variables predefined you can use in the text.
* `hosts` manages static dns entries defined in /etc/hosts
## Usage
Example manifest with job properties:
```
jobs:
- name: sysctl
release: vm-tuning
properties:
sysctl:
config:
- name: enable-ipv6
index: 70
config: |
# undo BOSH's stemcell's IPv6 lockdowns
# 10-ipv6-privacy.conf
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
# 60-bosh-sysctl.conf
net.ipv6.conf.all.accept_ra=1
net.ipv6.conf.default.accept_ra=1
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.default.accept_redirects=1
net.ipv6.conf.all.accept_redirects=1
net.ipv6.route.flush=0
- name: hosts
release: vm-tuning
properties: {}
hosts:
"192.168.1.10": ['fqdn.domain.com', 'alias', 'name']
"fe00::0": []
- name: resolvconf
release: vm-tuning
properties:
resolvconf:
search: local springer.com
options:
- "timeout:3"
- "attempts:1"
- name: scheduler
release: vm-tuning
properties:
scheduler:
default: noop
devices:
- name: sdb
scheduler: cfq
- name: users
release: vm-tuning
properties:
users:
- name: jriguera
uid: 1010
disable: false
sudo: true
ssh: true
public_key:
- ssh-rsa AAAA .... kna jriguera@thinkpad
- name: login_banner
release: vm-tuning
properties:
login_banner:
text: |
This server is managed by Bosh Director
___ ___
| _ \ __| It's PE,
| _/ _| baby!
|_| |___| platform-engineering@example.com
# $JOB_FULL on $DEPLOYMENT_NAME
```
## Development
Steps to build a new release:
```
git clone https://github.com/SpringerPE/vm-tuning-boshrelease.git
cd vm-tuning-boshrelease
bosh target BOSH_HOST
bosh create release --force && bosh upload release
```
### Final releases
In order to publish a final release, you can run `./bosh_final_release` for:
* Upload all blobs to the public S3 bucket (and set them to public)
* Create a final Bosh release (increasing the version number)
* Upload and publish the new boshrelease tgz file in GitHub releases section, so
you can point it directly in the manifest file (sha1 checksum is also calculated)
* Pushes and commits the changes to git
After that, you can also, upload the new release to bosh director `bosh upload release`
# Author
Based on https://github.com/cloudfoundry/os-conf-release
Springer Nature Platform Engineering, Jose Riguera
Copyright 2017 Springer Nature
# License
MIT License