Install /etc/hosts entries from bootstrap script.
This allows to add an entry which is not pointing to localhost but to a docker container in the Travis virtual env.pull/342/head
parent
8ef402511c
commit
ff88ad354f
15
.travis.yml
15
.travis.yml
|
@ -1,4 +1,5 @@
|
||||||
language: node_js
|
language: node_js
|
||||||
|
required: sudo
|
||||||
node_js:
|
node_js:
|
||||||
- '9'
|
- '9'
|
||||||
services:
|
services:
|
||||||
|
@ -12,20 +13,6 @@ addons:
|
||||||
packages:
|
packages:
|
||||||
- libgif-dev
|
- libgif-dev
|
||||||
- google-chrome-stable
|
- google-chrome-stable
|
||||||
hosts:
|
|
||||||
- admin.example.com
|
|
||||||
- login.example.com
|
|
||||||
- singlefactor.example.com
|
|
||||||
- dev.example.com
|
|
||||||
- home.example.com
|
|
||||||
- mx1.mail.example.com
|
|
||||||
- mx2.mail.example.com
|
|
||||||
- public.example.com
|
|
||||||
- secure.example.com
|
|
||||||
- authelia.example.com
|
|
||||||
- admin.example.com
|
|
||||||
- mail.example.com
|
|
||||||
- duo.example.com
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- export DISPLAY=:99.0
|
- export DISPLAY=:99.0
|
||||||
|
|
19
bootstrap.sh
19
bootstrap.sh
|
@ -24,25 +24,6 @@ then
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "[BOOTSTRAP] Checking if example.com domain is forwarded to your machine..."
|
|
||||||
cat /etc/hosts | grep "login.example.com" > /dev/null
|
|
||||||
if [ $? -ne 0 ];
|
|
||||||
then
|
|
||||||
echo "[ERROR] Please add those lines to /etc/hosts:
|
|
||||||
|
|
||||||
127.0.0.1 home.example.com
|
|
||||||
127.0.0.1 public.example.com
|
|
||||||
127.0.0.1 secure.example.com
|
|
||||||
127.0.0.1 dev.example.com
|
|
||||||
127.0.0.1 admin.example.com
|
|
||||||
127.0.0.1 mx1.mail.example.com
|
|
||||||
127.0.0.1 mx2.mail.example.com
|
|
||||||
127.0.0.1 singlefactor.example.com
|
|
||||||
127.0.0.1 login.example.com
|
|
||||||
192.168.240.100 duo.example.com"
|
|
||||||
return;
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[BOOTSTRAP] Running additional bootstrap steps..."
|
echo "[BOOTSTRAP] Running additional bootstrap steps..."
|
||||||
authelia-scripts bootstrap
|
authelia-scripts bootstrap
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,59 @@
|
||||||
var { exec } = require('./utils/exec');
|
var { exec } = require('./utils/exec');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
async function main() {
|
async function buildDockerImages() {
|
||||||
|
console.log("[BOOTSTRAP] Building required Docker images...");
|
||||||
|
|
||||||
console.log('Build authelia-example-backend docker image.')
|
console.log('Build authelia-example-backend docker image.')
|
||||||
await exec('docker build -t authelia-example-backend example/compose/nginx/backend');
|
await exec('docker build -t authelia-example-backend example/compose/nginx/backend');
|
||||||
|
|
||||||
console.log('Build authelia-duo-api docker image.')
|
console.log('Build authelia-duo-api docker image.')
|
||||||
await exec('docker build -t authelia-duo-api example/compose/duo-api');
|
await exec('docker build -t authelia-duo-api example/compose/duo-api');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function checkHostsFile() {
|
||||||
|
async function checkAndFixEntry(entries, domain, ip) {
|
||||||
|
const foundEntry = entries.filter(l => l[1] == domain);
|
||||||
|
if (foundEntry.length > 0) {
|
||||||
|
if (foundEntry[0][0] == ip) {
|
||||||
|
// The entry exists and is correct.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// We need to remove the entry and replace it.
|
||||||
|
console.log(`Update entry for ${domain}.`);
|
||||||
|
await exec(`cat /etc/hosts | grep -v "${domain}" | /usr/bin/sudo tee /etc/hosts > /dev/null`);
|
||||||
|
await exec(`echo "${ip} ${domain}" | /usr/bin/sudo tee -a /etc/hosts > /dev/null`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// We need to add the new entry.
|
||||||
|
console.log(`Add entry for ${domain}.`);
|
||||||
|
await exec(`echo "${ip} ${domain}" | /usr/bin/sudo tee -a /etc/hosts > /dev/null`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("[BOOTSTRAP] Checking if example.com domain is forwarded to your machine...");
|
||||||
|
const actualEntries = fs.readFileSync("/etc/hosts").toString("utf-8")
|
||||||
|
.split("\n").filter(l => l !== '').map(l => l.split(" ").filter(w => w !== ''));
|
||||||
|
|
||||||
|
await checkAndFixEntry(actualEntries, 'login.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'admin.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'singlefactor.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'dev.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'home.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'mx1.mail.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'mx2.mail.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'public.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'secure.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'authelia.example.com', '127.0.0.1');
|
||||||
|
await checkAndFixEntry(actualEntries, 'mail.example.com', '127.0.0.1');
|
||||||
|
|
||||||
|
await checkAndFixEntry(actualEntries, 'duo.example.com', '192.168.240.100');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function checkKubernetesDependencies() {
|
||||||
|
console.log("[BOOTSTRAP] Checking Kubernetes tools in /tmp to allow testing a Kube cluster... (no junk installed on host)");
|
||||||
|
|
||||||
if (!fs.existsSync('/tmp/kind')) {
|
if (!fs.existsSync('/tmp/kind')) {
|
||||||
console.log('Install Kind for spawning a Kubernetes cluster.');
|
console.log('Install Kind for spawning a Kubernetes cluster.');
|
||||||
|
@ -21,6 +68,12 @@ async function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
await checkHostsFile();
|
||||||
|
await buildDockerImages();
|
||||||
|
await checkKubernetesDependencies();
|
||||||
|
}
|
||||||
|
|
||||||
main().catch((err) => {
|
main().catch((err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|
Loading…
Reference in New Issue