Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deployment issues #19

Open
tahamatech opened this issue Oct 30, 2017 · 12 comments
Open

Deployment issues #19

tahamatech opened this issue Oct 30, 2017 · 12 comments
Assignees

Comments

@tahamatech
Copy link

I was able to build the source code.

However, after running ./deploy_stack as in:

cd cloudformation && ./deploy-stack.sh

I get some errors like:

ERROR: missing configuration variable: STACK_NAME
ERROR: missing configuration variable: S3_CODE_BUCKET
..
..

How am I supposed to set these variables?

@revmischa
Copy link
Owner

Those are up to you to set as environment variables. See https://github.com/revmischa/cloudcam/blob/master/cloudformation/deploy-stack-dev.sh
Depending on your AWS setup

@tahamatech
Copy link
Author

Few questions:

STACK_NAME: what does it relate to?
S3_CODE_BUCKET: this can be any AWS bucket accessible with my IAM user
S3_UI_BUCKET: this can be another AWS bucket accessible with my IAM user
CLOUDFRONT_UI_DISTRIBUTION_ID: this will be my cloud front ID, understood
JANUS_KMS_KEY_USER: what is this?
JANUS_HEALTH_CHECK_ALARMS_TOPIC: what is this?

More info:

I started a new AWS server on Ubuntu stack, and deployed JANAS server there, and ran the demos also (they dont work 100% but the to and fro communication between the demos on different browsers in different PCs show at-least there is something in place and hopefully working).

I was assuming setting up a new janas server will get the the JANAS_KMS_KEY_USER and HEALTH_CHECK_ALARMS_TOPIC somehow, but that is not the case.

How do I set above variables?

@revmischa
Copy link
Owner

They're environment variables - see https://github.com/revmischa/cloudcam/blob/master/cloudformation/deploy-stack-dev.sh

JANUS_KMS_KEY_USER=cloudcam-ops   # user which is granted permission to encrypt Janus SSL key via encrypt-ssl-key.sh
JANUS_HEALTH_CHECK_ALARMS_TOPIC=JanusHealthCheckAlarms   # topic for janus gateway health check alarms

the topic is a SNS topic i assume

@tahamatech
Copy link
Author

tahamatech commented Nov 2, 2017

I set these variables, according to my understanding, now I get new set of errors:


[user@localhost cloudformation]$ ./deploy-stack.sh 
make_bucket: my-s3-bucket-name


[Errno 2] No such file or directory: u'DIR/cloudcam-packaged.yml'

Invalid template path /home/user/cloudcam/cloudformation/cloudcam-packaged.yml
arn:aws:sns:us-east-1:540005654000:someSnsTopic:32cc7473-5085-495c-bb57-b4cebdead66e
./deploy-stack.sh: line 53: webpack: command not found

The user-provided path /../dev-ui/webroot does not exist.
{
    "Invalidation": {
        "Status": "InProgress", 
        "InvalidationBatch": {
            "Paths": {
                "Items": [
                    "/*"
                ], 
                "Quantity": 1
            }, 
            "CallerReference": "cli-1509631595-851972"
        }, 
        "Id": "IN6AAAAXE5G9U", 
        "CreateTime": "2017-11-02T14:06:41.975Z"
    }, 
    "Location": "https://cloudfront.amazonaws.com/2017-03-25/distribution/E2FSRZ1F75Y4IP/invalidation/IN6AAAAXE5G9U"
}
[user@localhost cloudformation]$ 

Any idea how to go around this?

@someone--else
Copy link
Collaborator

someone--else commented Nov 2, 2017

Should be fixed in #20
There are also a couple of new env vars to set in deploy-stack-*.sh:

  • JANUS_HOSTED_ZONE_ID: AWS hosted zone id where DNS aliases for Janus instances will be created
  • JANUS_HOSTED_ZONE_DOMAIN: domain (should be managed by the JANUS_HOSTED_ZONE_ID) where DNS aliases for Janus instances will be created

(those are only useful for adding/removing Janus Lightsail instances programmatically via janus_scale_lightsail lambda; we should probably add a configuration option for a static Janus instance list instead for cases where they are hosted elsewhere)

@tahamatech
Copy link
Author

tahamatech commented Nov 6, 2017

I moved forward, but now I get this error:

An error occurred (ValidationError) when calling the CreateChangeSet operation: Invalid input for parameter key JanusCertPem. Cannot specify usePreviousValue as true for a parameter key not in the previous template
UI URL:
arn:aws:sns:us-east-1:541155654472:jAAAAAASnsTopic:32cc7473-5085-495c-bb57-b4ceddddd66e

full log:

[user@localhost cloudformation]$ ./deploy-stack.sh
make_bucket: mybucket-s3

Successfully packaged artifacts and wrote output template to file /home/user/cloudcam/cloudformation/cloudcam-packaged.yml.
Execute the following command to deploy the packaged template
aws cloudformation deploy --template-file /home/user/cloudcam/cloudformation/cloudcam-packaged.yml --stack-name <YOUR STACK NAME>

An error occurred (ValidationError) when calling the CreateChangeSet operation: Invalid input for parameter key JanusCertPem. Cannot specify usePreviousValue as true for a parameter key not in the previous template
UI URL:
arn:aws:sns:us-east-1:541155654472:jAAAAAASnsTopic:32cc7473-5085-495c-bb57-b4ceddddd66e
./deploy-stack.sh: line 58: webpack: command not found
upload: ../dev-ui/webroot/favicon.ico to s3://mybucket-s3-ui/favicon.ico
upload: ../dev-ui/webroot/style.css to s3://mybucket-s3-ui/style.css
upload: ../dev-ui/webroot/icon.svg to s3://mybucket-s3-ui/icon.svg
upload: ../dev-ui/webroot/index.html to s3://mybucket-s3-ui/index.html
upload: ../dev-ui/webroot/janus.nojquery.js to s3://mybucket-s3-ui/janus.nojquery.js
{
    "Invalidation": {
        "Status": "InProgress", 
        "InvalidationBatch": {
            "Paths": {
                "Items": [
                    "/*"
                ], 
                "Quantity": 1
            }, 
            "CallerReference": "cli-1509964711-577450"
        }, 
        "Id": "I1E0QDYOB2TEXY", 
        "CreateTime": "2017-11-06T10:38:33.554Z"
    }, 
    "Location": "https://cloudfront.amazonaws.com/2017-03-25/distribution/E31S0ZAIA957BC/invalidation/I1E0QDYOB2TEXY"
}
[user@localhost cloudformation]$ 

@tahamatech
Copy link
Author

tahamatech commented Nov 6, 2017

Updates:

in cloudcam.yml file, I can see this:

Parameters:
  UiBucketName:
    Type: String
    Description: 'S3 UI bucket name. Must be the same as the UI domain name for CNAME redirect to work'
  JanusCertPem:
    Type: String
    Description: 'Janus gateway SSL cert PEM'
    Default: ''
  JanusCertKey:
    Type: String
    Description: 'Janus gateway SSL cert KEY'
    Default: ''

JanusCertPem and JanusCertKey are both blank, resulting in blank entries when cloudcam-packaged.yml is created.

Question: how do i set JanusCertPem and JanusCertKey ?

@tahamatech
Copy link
Author

tahamatech commented Nov 7, 2017

Also, what does:

./deploy-stack.sh: line 58: webpack: command not found

mean?

@tahamatech
Copy link
Author

tahamatech commented Nov 7, 2017

Update: so I installed webpack, using similar command:

npm install webpack -g

then I run ./deploy-stack.sh again, this time I get this:

[user@localhost cloudformation]$ ./deploy-stack.sh 
make_bucket: mybucket-s3

Successfully packaged artifacts and wrote output template to file /home/user/cloudcam/cloudformation/cloudcam-packaged.yml.
Execute the following command to deploy the packaged template
aws cloudformation deploy --template-file /home/user/cloudcam/cloudformation/cloudcam-packaged.yml --stack-name <YOUR STACK NAME>

An error occurred (ValidationError) when calling the CreateChangeSet operation: Invalid input for parameter key JanusCertPem. Cannot specify usePreviousValue as true for a parameter key not in the previous template
UI URL:
arn:aws:sns:us-east-1:541155654472:janwarSnsTopic:32cc7473-5085-495c-bb57-b4cebdead66e
/home/user/cloudcam/dev-ui/webpack.config.babel.js:1
(function (exports, require, module, __filename, __dirname) { import { DefinePlugin, optimize } from 'webpack'
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at requireConfig (/usr/lib/node_modules/webpack/bin/convert-argv.js:97:18)
upload: ../dev-ui/webroot/style.css to s3://webrtc-xyzname.com/style.css
upload: ../dev-ui/webroot/index.html to s3://webrtc-xyzname.com/index.html
upload: ../dev-ui/webroot/favicon.ico to s3://webrtc-xyzname.com/favicon.ico
upload: ../dev-ui/webroot/index_old.html to s3://webrtc-xyzname.com/index_old.html
upload: ../dev-ui/webroot/janus.nojquery_old.js to s3://webrtc-xyzname.com/janus.nojquery_old.js
upload: ../dev-ui/webroot/janus.nojquery.js to s3://webrtc-xyzname.com/janus.nojquery.js
upload: ../dev-ui/webroot/icon.svg to s3://webrtc-xyzname.com/icon.svg
{
    "Invalidation": {
        "Status": "InProgress", 
        "InvalidationBatch": {
            "Paths": {
                "Items": [
                    "/*"
                ], 
                "Quantity": 1
            }, 
            "CallerReference": "cli-1510051176-466808"
        }, 
        "Id": "I2U4LTHY119DWJ", 
        "CreateTime": "2017-11-07T10:39:42.581Z"
    }, 
    "Location": "https://cloudfront.amazonaws.com/2017-03-25/distribution/E2STD5QKTLDI92/invalidation/I2U4LTHY119DWJ"
}
[user@localhost cloudformation]$ 

Any further pointers? Seems like never ending efforts here.

@someone--else
Copy link
Collaborator

Apologies for late reply

JanusCertPem/JanusCertKey aren't currently used for anything and are be removed in #20, so CloudFormation ValidationError should go away

As for SyntaxError: Unexpected token import, I'm not seeing that in our environment; what webpack version do you have?

@someone--else
Copy link
Collaborator

Also, #21 fixes the dev-ui/.env file generation, so creating the Cloudformation stack from scratch should now work properly

@tahamatech
Copy link
Author

tahamatech commented Nov 9, 2017

As for SyntaxError: Unexpected token import, I'm not seeing that in our environment; what webpack version do you have?

It's:

[user@localhost ~]$ webpack --version
3.8.1
[user@localhost ~]$ 

Also, #21 fixes the dev-ui/.env file generation, so creating the Cloudformation stack from scratch should now work properly

This time I just downloaded whole cloudcam project again and 'make' it and run ./deploy-stack.sh, this time I get different error:


[user@localhost cloudformation]$ ./deploy-stack.sh 
make_bucket: janwar-s3
Uploading to 5f2abf8656b8c0d6d3cb450ed060e3e5  897965 / 897965.0  (100.00%)
Successfully packaged artifacts and wrote output template to file /home/user/cloudcam/cloudformation/cloudcam-packaged.yml.
Execute the following command to deploy the packaged template
aws cloudformation deploy --template-file /home/user/cloudcam/cloudformation/cloudcam-packaged.yml --stack-name <YOUR STACK NAME>

An error occurred (ValidationError) when calling the CreateChangeSet operation: Invalid input for parameter key LightsailBlueprintId. Cannot specify usePreviousValue as true for a parameter key not in the previous template
UI URL:
arn:aws:sns:us-east-1:541155654472:janwarSnsTopic:32cc7473-5085-495c-bb57-b4cebdead66e
/home/user/cloudcam/dev-ui/webpack.config.babel.js:1
(function (exports, require, module, __filename, __dirname) { import { DefinePlugin, optimize } from 'webpack'
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at requireConfig (/usr/lib/node_modules/webpack/bin/convert-argv.js:97:18)
upload: ../dev-ui/webroot/style.css to s3://webrtc-mybucket.com/style.css
upload: ../dev-ui/webroot/index.html to s3://webrtc-mybucket.com/index.html
upload: ../dev-ui/webroot/favicon.ico to s3://webrtc-mybucket.com/favicon.ico
upload: ../dev-ui/webroot/icon.svg to s3://webrtc-mybucket.com/icon.svg
upload: ../dev-ui/webroot/janus.nojquery.js to s3://webrtc-mybucket.com/janus.nojquery.js
{
    "Invalidation": {
        "Status": "InProgress", 
        "InvalidationBatch": {
            "Paths": {
                "Items": [
                    "/*"
                ], 
                "Quantity": 1
            }, 
            "CallerReference": "cli-1510218639-970803"
        }, 
        "Id": "IG9JAQ6LTOZNB", 
        "CreateTime": "2017-11-09T09:10:41.090Z"
    }, 
    "Location": "https://cloudfront.amazonaws.com/2017-03-25/distribution/E2STD5QKTLDI92/invalidation/IG9JAQ6LTOZNB"
}
[user@localhost cloudformation]$ 

but I can see this variable 'LightsailBlueprintId' is set to default in cloudcam.yml:


  LightsailBlueprintId:
    Type: String
    Description: 'Lightsail Janus gateway instance blueprint (image) id'
    Default: amazon_linux_2017_03_1_1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants