It's worth noting that this can all be done remotely from your laptop once you give BBL the access it needs for the cloud environment.
Steps
1. First your going to need the bosh v2 CLI which you can install here
https://bosh.io/docs/cli-v2/
Verify:
pasapicella@pas-macbook:~$ bosh -version
version 5.0.1-2432e5e9-2018-07-18T21:41:03Z
Succeeded
2. Second you will need Terrform having a Mac I use brew
$ brew install terrafrom
Verify:
pasapicella@pas-macbook:~$ terraform version
Terraform v0.11.7
$ brew tap cloudfoundry/tap
$ brew install bosh-cli
$ brew install bbl
Further instructions on this link
https://github.com/cloudfoundry/bosh-bootloader
4. At this point your ready to deploy BOSH the instructions for AWS are here
https://github.com/cloudfoundry/bosh-bootloader/blob/master/docs/getting-started-aws.md
Pretty straight forward but here is what I did at this point
5. In order for bbl to interact with AWS, an IAM user must be created. This user will be issuing API requests to create the infrastructure such as EC2 instances, load balancers, subnets, etc.
The user must have the following policy which I just copy into my clipboard to use later:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"logs:*",
"elasticloadbalancing:*",
"cloudformation:*",
"iam:*",
"kms:*",
"route53:*",
"ec2:*"
],
"Resource": "*"
}
]
}
$ aws iam create-user --user-name "bbl-user”
This next command requires you to copy the policy JSON above
$ aws iam put-user-policy --user-name "bbl-user" --policy-name "bbl-policy" --policy-document "$(pbpaste)"
$ aws iam create-access-key --user-name "bbl-user"
You will get a JSON response at this point as follows. Save file created here as it’s used next few steps
{
"AccessKey": {
"UserName": "bbl-user",
"Status": "Active",
"CreateDate": "2018-08-07T03:30:39.993Z",
"SecretAccessKey": ".....",
"AccessKeyId": "........"
}
}
In the next step BBL will use these commands to create infrastructure on AWS.
6. Now we can pave the infrastructure, Create a Jumpbox, and Create a BOSH Director as well as a LB which I need as I plan to deploy concourse using BOSH.
$ bbl up --aws-access-key-id ..... --aws-secret-access-key ... --aws-region ap-southeast-2 --lb-type concourse --name bosh-director -d -s state --iaas aws
The process takes around 5-8 minutes.
The bbl state directory contains all of the files that were used to create your bosh director. This should be checked in to version control, so that you have all the information necessary to later destroy or update this environment at a later date.
7. Finally we target the the bosh director as follows. Keep in mind everything we need is stored in the "state" directory as per above
$ eval "$(bbl print-env -s state)"
8. This will set various ENV variables which the bosh CLI will then use to target the bosh director. Now we need to just prepare ourselves to actually log in. I use a script as follows
target-bosh.sh
bbl director-ca-cert -s state > bosh.crt
export BOSH_CA_CERT=bosh.crt
export BOSH_ENVIRONMENT=$(bbl director-address -s state)
echo ""
echo "Username: $(bbl director-username -s state)"
echo "Password: $(bbl director-password -s state)"
echo ""
echo "Log in using -> bosh log-in"
echo ""
bosh alias-env aws-env
echo "ENV set to -> aws-env"
echo ""
Output When run with password omitted ->
pasapicella@pas-macbook:~/pivotal/aws/pcf-pipelines$ ./target-bosh.sh
Username: admin
Password: ......
Log in using -> bosh log-in
Using environment 'https://10.0.0.6:25555' as client 'admin'
Name bosh-bosh-director-aws
UUID 3ade0d28-77e6-4b5b-9be7-323a813ac87c
Version 266.4.0 (00000000)
CPI aws_cpi
Features compiled_package_cache: disabled
config_server: enabled
dns: disabled
snapshots: disabled
User admin
Succeeded
ENV set to -> aws-env
9. Finally lets log-in as follows
$ bosh -e aws-env log-in
Output ->
pasapicella@pas-macbook:~/pivotal/aws/pcf-pipelines$ bosh -e aws-env log-in
Successfully authenticated with UAA
Succeeded
10. Last but not least lets see what VM's bosh has under management. These VM's are for my concourse I installed. If you would like to install concourse use this link - https://github.com/cloudfoundry/bosh-bootloader/blob/master/docs/concourse.md
pasapicella@pas-macbook:~/pivotal/aws/pcf-pipelines$ bosh -e aws-env vms
Using environment 'https://10.0.0.6:25555' as client 'admin'
Task 20. Done
Deployment 'concourse'
Instance Process State AZ IPs VM CID VM Type Active
db/ec8aa978-1ec5-4402-9835-9a1cbce9c1e5 running z1 10.0.16.5 i-0d33949ece572beeb default true
web/686546be-09d1-43ec-bbb7-d96bb5edc3df running z1 10.0.16.4 i-03af52f574399af28 default true
worker/679be815-6250-477c-899c-b962076f26f5 running z1 10.0.16.6 i-0efac99165e12f2e6 default true
3 vms
Succeeded
More Information
https://github.com/cloudfoundry/bosh-bootloader/blob/master/docs/getting-started-aws.md
https://github.com/cloudfoundry/bosh-bootloader/blob/master/docs/howto-target-bosh-director.md
No comments:
Post a Comment