Giter Club home page Giter Club logo

pallet.github.com's Introduction

TODO!

pallet.github.com's People

Contributors

alanning avatar basil3whitehouse avatar bfritz avatar bobo avatar hhutch avatar hugoduncan avatar inecas avatar jlavallee avatar josh-tilles avatar micrypt avatar neotyk avatar otfrom avatar tbatchelli avatar zmaril avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pallet.github.com's Issues

Following the example to instantiate first host on rackspace cloud fails

Set up project.clj as advised after 'lein new':

$ cat project.clj
(defproject quickstart "1.0.0-SNAPSHOT"
:dependencies [[org.cloudhoist/pallet "0.6.6"]
[org.cloudhoist/pallet-crates-standalone "0.5.0"]
[org.slf4j/slf4j-api "1.6.1"]
[ch.qos.logback/logback-core "1.0.0"]
[ch.qos.logback/logback-classic "1.0.0"]
[org.jclouds/jclouds-all "1.0.0"]
[org.jclouds.driver/jclouds-jsch "1.0.0"]
[org.jclouds.driver/jclouds-slf4j "1.0.0"]]
:repositories {"sonatype"
"http://oss.sonatype.org/content/repositories/releases"})

Set up .pallet config:
(defpallet
:services
{:rs {:provider "cloudservers-us" :identity blahblahblah :credentials foofoobar}})

ran lein deps

Then,
$ lein repl
user=> (require 'pallet.core 'pallet.compute 'pallet.configure)
nil
user=> (pallet.core/converge (pallet.core/group-spec "mygroup" :count 1) :compute (pallet.configure/compute-service :gogrid))
java.lang.ClassCastException: java.lang.Boolean cannot be cast to clojure.lang.Associative (NO_SOURCE_FILE:0)
user=> ^D

Any ideas? Thanks!

The Ask Us left tab is invasive

I am just trying to read the Pallet website (Pallet is a great tool) and the 'Ask Us' left tab is really really invasive. It hides the main text. This is exacerbated when using a mobile phone as I tried earlier today since the tab takes a lot of screen real estate.

Could you just get rid of it?

Emeka

Give guidelines on how to write and publish a crate

Some more guidelines on crates would be appreciated as to me it seems like the fundamental unit of pallet. Some things to include:

  • Where to find crates (such that people don't unintentionally reinvent wheels)
  • How to write a crate
  • Which phases should do what
  • Where to publish crates

This tutorial cost me money

I have free tier usage with AWS and your First Steps with Pallet tutorial cost me money. Why are you not using Micro instances, it is a tutorial?. It cost me money and it didn't fucking work.

First Steps: Could not locate node definition

Hi, we're having trouble with the "First Steps" instructions at http://palletops.com/doc/first-steps/

Here is an example shell session with the final error message:

$ lein upgrade

$ lein version
Leiningen 1.7.1 on Java 1.6.0_29 Java HotSpot(TM) 64-Bit Server VM

$ lein plugin install lein-newnew 0.2.4

$ lein plugin install org.cloudhoist/lein-pallet-new 0.1.1-SNAPSHOT

$ lein plugin install org.cloudhoist/pallet-lein 0.4.2-SNAPSHOT

$ lein new pallet quickstart

$ cd quickstart

$ lein pallet add-service aws aws-ec2 MY_AWS_ACCESS_KEY_ID MY_AWS_SECRET_KEY
... 
Could not locate node definition for MY_AWS_SECRET_KEY

We have the same problem on Ubuntu 10.04 and OS X 10.6.8.

Thanks,
-Stuart Sierra

Use jekyll-assets for managing all assets

https://github.com/ixti/jekyll-assets

We could use the bootstrap pipeline, minification and compression.

There are open questions, mostly they have to do with mini-sites and how they will have access to the new assets: currently assets live in their own CDN, and are manually versioned. So using this plugin it's not clear that
1- we can push them to the CDN -- we can probably do so if we don't use the liquid tags
2- other project can reliably reference these generated assets.

If we generate assets without cache busting and we don't use the jekyll-cache tags, then we should be able to continue pushing the assets are we're currently doing...

Update output of `lein pallet help [converge | lift]`

Currently, the output of lein pallet help converge and lein pallet help lift talk about node-types. I think it would be more clear if these were designated groups or something similar, since you actually need to be designating something that was defined with group-spec.

Issues with "First Steps " document

I just ran through the first steps document online and I had some issues. With @tbatchelli's help I overcame all of them and was successful, but I thought I'd document them all to help with revising the doc.

I'll put them all together in a single issue, but feel free to split out parts and close this issue as you see fit.

Part 1: lein pallet commands throw an exception

The lein command throws an exception apparently because jclouds can't resolve my hostname. The error itself makes sense because my laptop doesn't have a DNS name, but I don't know why the system should care. The requested command seems to complete fine, so this is basically a cosmetic issue.

Independently of the exception, the lein pallet command seems to do an insane amount of logging about pretty much nothing.

When I was first doing this, I had the exception when doing the lein pallet add-service command. I made a new project to do this write-up and now I see that it occurs on any lein pallet invocation. Here I used lein help. If I run lein help repeatedly, I get the error on each run.

mondrian:clj tom$ lein new pallet quickstart
mondrian:clj tom$ cd quickstart
mondrian:quickstart tom$ lein pallet help
12:25:10,345 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:25:10,345 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:25:10,346 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/Users/tom/src/clj/quickstart/resources/logback.xml]
12:25:10,576 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
12:25:10,579 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 1 seconds
12:25:10,579 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[/Users/tom/src/clj/quickstart/resources/logback.xml]] every 1 seconds.
12:25:10,579 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
12:25:10,586 |-ERROR in ch.qos.logback.core.util.ContextUtil@51ed7f2f - Failed to get local hostname java.net.UnknownHostException: mondrian: mondrian: nodename nor servname provided, or not known
    at java.net.UnknownHostException: mondrian: mondrian: nodename nor servname provided, or not known
    at  at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
    at  at ch.qos.logback.core.util.ContextUtil.getLocalHostName(ContextUtil.java:32)
    at  at ch.qos.logback.core.util.ContextUtil.addHostNameAsProperty(ContextUtil.java:41)
    at  at ch.qos.logback.classic.joran.action.ConfigurationAction.begin(ConfigurationAction.java:56)
    at  at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276)
    at  at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148)
    at  at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130)
    at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56)
    at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
    at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
    at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
    at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
    at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
    at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
    at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
    at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
    at  at clojure.tools.logging$eval390$reify__391.get_logger(logging.clj:45)
    at  at pallet.main$pallet_task.doInvoke(main.clj:133)
    at  at clojure.lang.RestFn.invoke(RestFn.java:439)
    at  at clojure.lang.Var.invoke(Var.java:423)
    at  at user$eval5.invoke(form-init8741844825741654977.clj:1)
    at  at clojure.lang.Compiler.eval(Compiler.java:6511)
    at  at clojure.lang.Compiler.eval(Compiler.java:6501)
    at  at clojure.lang.Compiler.eval(Compiler.java:6501)
    at  at clojure.lang.Compiler.load(Compiler.java:6952)
    at  at clojure.lang.Compiler.loadFile(Compiler.java:6912)
    at  at clojure.main$load_script.invoke(main.clj:283)
    at  at clojure.main$init_opt.invoke(main.clj:288)
    at  at clojure.main$initialize.invoke(main.clj:316)
    at  at clojure.main$null_opt.invoke(main.clj:349)
    at  at clojure.main$main.doInvoke(main.clj:427)
    at  at clojure.lang.RestFn.invoke(RestFn.java:421)
    at  at clojure.lang.Var.invoke(Var.java:419)
    at  at clojure.lang.AFn.applyToHelper(AFn.java:163)
    at  at clojure.lang.Var.applyTo(Var.java:532)
    at  at clojure.main.main(main.java:37)
Caused by: java.net.UnknownHostException: mondrian: nodename nor servname provided, or not known
    at  at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at  at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
    at  at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
    at  at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
    at  ... 39 common frames omitted
12:25:10,587 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
12:25:10,591 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
12:25:10,618 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
12:25:10,704 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
12:25:10,709 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [COMPUTEFILE]
12:25:10,735 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
12:25:10,736 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern logs/old/jclouds-compute.%d{yyyy-MM-dd}.log for the active file
12:25:10,743 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/old/jclouds-compute.%d{yyyy-MM-dd}.log'.
12:25:10,743 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
12:25:10,748 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sun Apr 13 12:25:10 PDT 2014
12:25:10,751 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
12:25:10,752 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[COMPUTEFILE] - Active log file name: logs/jclouds-compute.log
12:25:10,752 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[COMPUTEFILE] - File property is set to [logs/jclouds-compute.log]
12:25:10,755 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
12:25:10,755 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [WIREFILE]
12:25:10,757 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
12:25:10,757 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern logs/old/jclouds-wire.%d{yyyy-MM-dd}.log for the active file
12:25:10,759 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/old/jclouds-wire.%d{yyyy-MM-dd}.log'.
12:25:10,759 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
12:25:10,759 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sun Apr 13 12:25:10 PDT 2014
12:25:10,759 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
12:25:10,761 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[WIREFILE] - Active log file name: logs/jclouds-wire.log
12:25:10,761 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[WIREFILE] - File property is set to [logs/jclouds-wire.log]
12:25:10,761 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
12:25:10,761 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [PALLETFILE]
12:25:10,762 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
12:25:10,763 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern logs/old/pallet.%d{yyyy-MM-dd}.log for the active file
12:25:10,764 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/old/pallet.%d{yyyy-MM-dd}.log'.
12:25:10,764 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
12:25:10,764 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sun Apr 13 12:25:10 PDT 2014
12:25:10,764 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
12:25:10,765 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[PALLETFILE] - Active log file name: logs/pallet.log
12:25:10,765 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[PALLETFILE] - File property is set to [logs/pallet.log]
12:25:10,766 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
12:25:10,766 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [VMFESTFILE]
12:25:10,768 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
12:25:10,768 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern logs/old/vmfest.%d{yyyy-MM-dd}.log for the active file
12:25:10,770 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/old/vmfest.%d{yyyy-MM-dd}.log'.
12:25:10,770 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
12:25:10,770 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sun Apr 13 12:25:10 PDT 2014
12:25:10,770 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
12:25:10,772 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[VMFESTFILE] - Active log file name: logs/vmfest.log
12:25:10,772 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[VMFESTFILE] - File property is set to [logs/vmfest.log]
12:25:10,773 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [jclouds.headers] to INFO
12:25:10,773 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [WIREFILE] to Logger[jclouds.headers]
12:25:10,775 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [jclouds.wire] to INFO
12:25:10,775 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [WIREFILE] to Logger[jclouds.wire]
12:25:10,775 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [jclouds.compute] to INFO
12:25:10,775 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [COMPUTEFILE] to Logger[jclouds.compute]
12:25:10,775 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [jclouds.ssh] to INFO
12:25:10,775 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [COMPUTEFILE] to Logger[jclouds.ssh]
12:25:10,775 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [clj-ssh.ssh] to INFO
12:25:10,775 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [COMPUTEFILE] to Logger[clj-ssh.ssh]
12:25:10,775 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet] to DEBUG
12:25:10,775 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [PALLETFILE] to Logger[pallet]
12:25:10,775 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [vmfest] to DEBUG
12:25:10,776 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [VMFESTFILE] to Logger[vmfest]
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
12:25:10,776 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [clj-ssh.ssh] to ERROR
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.action-plan] to INFO
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.action-plan] to INFO
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.algo.fsm] to WARN
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.algo.fsmop] to WARN
12:25:10,776 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.configure] to INFO
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.core.api] to DEBUG
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.core.operations] to DEBUG
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.core.primitives] to DEBUG
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.crate.nohup] to DEBUG
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.execute] to DEBUG
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.executors] to INFO
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.project] to INFO
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.stevedore] to INFO
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [pallet.transport] to DEBUG
12:25:10,777 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
12:25:10,780 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@33b2cb98 - Registering current configuration as safe fallback point

Pallet is a provisioning, configuration management and orchestration tool.

Several tasks are available:

add-service      - Add a service definition to pallet.
bootstrap        - Bootstrap pallet to work with the specified provider.
config           - Create a pallet configuration file in ~/.pallet/config.clj
containers       - List containers.
converge         - Adjust node counts.
converge-test    -
describe-node    - Describe the node definition.
down             - Remove project nodes.
help             - Display a list of tasks or help for a given task.
images           - List images.
lift             - Apply configuration.
nodes            - List nodes.
project-init     - Initialise a project.
providers        - Provide information on the supported and enabled providers.
providers-test   -
to-blob          - Upload to a blob.
up               - Bring up nodes.
version          - Print Pallet's version to standard out.

Run pallet help $TASK for details.


Usage:

 Switches                    Default  Desc
 --------                    -------  ----
 -P, --service                        Service key to use (use add-service to create a service
 -p, --provider                       Cloud provider name.
 -i, --identity                       Cloud user name or key.
 -c, --credential                     Cloud password or secret.
 -B, --blobstore-provider             Blobstore provider name.
 -I, --blobstore-identity             Blobstore user name or key.
 -C, --blobstore-credential           Blobstore password or secret.
 -O, --project-options                Project options (usually picked up from project.clj).
 -D, --defaults                       Default options (usually picked up from config.clj).


If no options are given, the following sequence is used to
find a compute service to use.

  the pallet.config.service property is checked for the
    name of a var to use for the service,

  the ~/.pallet/config.clj is checked for an active profile
    specified with `defpallet`.  e.g.
      (defpallet
        :services {
          :aws {:provider "ec2"
                :identity "username or key"
                :credential "password, key or secret key"}})

  the pallet.config/service is used if it exists.

You can write project specific tasks under the
 pallet.task namespace.

See http://palletops.com for documentation
mondrian:quickstart tom$

Part 2: Converge fails because of a bad project file

When I tried to run the first converge command, I got the following results:

; CIDER 0.6.0alpha (package: 20140125.2304) (Clojure 1.4.0, nREPL 0.2.3)
user> (require 'pallet.api 'pallet.compute 'pallet.configure)
nil
user> (pallet.api/converge
  (pallet.api/group-spec "mygroup"
   :count 1
   :node-spec (pallet.api/node-spec
               :image {:os-family :ubuntu :image-id "us-east-1/ami-3c994355"}))
  :compute (pallet.configure/compute-service :aws))
CreationException Guice creation errors:

1) org.jclouds.rest.RestContext<org.jclouds.aws.ec2.AWSEC2Client, A> cannot be used as a key; It is not fully specified.

1 error  com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist (Errors.java:435)
user> 

Toni gave gave me a new project.clj file and everything worked better.

Part 3: AWSResponse exception during shutdown

When I ran the first shutdown, I got the following error. The system did seem to shut down fine, however.

user> (pallet.api/converge
  (pallet.api/group-spec "mygroup" :count 0)
  :compute (pallet.configure/compute-service :aws))
AWSResponseException request POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: AWSError{requestId='6837c6a3-f81a-4788-83a0-2a914cf9939d', requestToken='null', code='DependencyViolation', message='resource sg-0d56e668 has a dependent object', context='{Response=, Errors=}'}  org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError (ParseAWSErrorFromXmlContent.java:77)
user> (pst)
AWSResponseException request POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: AWSError{requestId='6837c6a3-f81a-4788-83a0-2a914cf9939d', requestToken='null', code='DependencyViolation', message='resource sg-0d56e668 has a dependent object', context='{Response=, Errors=}'}
    org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError (ParseAWSErrorFromXmlContent.java:77)
    org.jclouds.http.handlers.DelegatingErrorHandler.handleError (DelegatingErrorHandler.java:67)
    org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue (BaseHttpCommandExecutorService.java:180)
    org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke (BaseHttpCommandExecutorService.java:150)
    org.jclouds.rest.internal.InvokeHttpMethod.invoke (InvokeHttpMethod.java:93)
    org.jclouds.rest.internal.InvokeHttpMethod.apply (InvokeHttpMethod.java:76)
    org.jclouds.rest.internal.InvokeHttpMethod.apply (InvokeHttpMethod.java:47)
    org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation (FunctionalReflection.java:117)
    com.google.common.reflect.AbstractInvocationHandler.invoke (AbstractInvocationHandler.java:79)
    com.sun.proxy.$Proxy56.deleteSecurityGroupInRegion (:-1)
    org.jclouds.ec2.compute.EC2ComputeService.deleteSecurityGroup (EC2ComputeService.java:228)
    org.jclouds.ec2.compute.EC2ComputeService$3.apply (EC2ComputeService.java:311)
nil
user> 

Part 4: Installing curl is a bad example

curl is already installed on that image when you set it up, so having that be the package you install is not particularly compelling :).

Part 5: package action moved

In the section "Installing something", the use refers to the wrong location for the package function. This should be corrected to:

(use '[pallet.actions :only [package]]
     '[pallet.api :only [plan-fn]])

That's all. Thanks for your help, Toni!

Split first steps

The first steps document is a bit heavy and assumes a lot about what the user wants to do. Personally I skipped over it entirely. Instead, I started by running scripts locally, then on an existing server. I don't want to spin up a bunch of AWS nodes that I'd potentially need to pay for as Issue #51 points out.

I'd split first steps into: Getting Started Locally, Getting Started With An Existing Server, Getting Started In The Cloud. This covers a range of entry points for new users with potentially broad use cases.

Pexpect equivalent for Pallet

Hello,
This how to is interesting http://palletops.com/doc/how-tos/using-pallet-with-existing-servers/ , but my servers can be accessed only in two steps: first you login by ssh with your private key, but if you want to do anything interesting (install solftare, change configuration files, stop/start servers), you need to run sudo with a privileged user and only then you can perform those more sensitive commands. Unless I can convince the sysadmins to grant me direct access to the servers - which they won't do for security reasons - I have to live with this restriction.
So far, I have make my deployment scripts in Python and I use python-pexpect to automatically provide the sudo password when the server requests it. How could I do something like that with Pallet?

Thanks,
Ludovic

Clarify "using pallet with existing servers" HowTo

When reading http://palletops.com/doc/how-tos/using-pallet-with-existing-servers/, it wasn't clear to me how the group name should be specified. Especially when using the lein plugin. I recommend adding something like the following:

Assume your lein project looks something like:

`-- pallet_project
    |-- project.clj
    `-- src
         `-- com
              `foo
               |-- nodes.clj  ; nodes, servers, and group definitions

Assume you have a group specification in nodes.clj such as:

(def
  ^{:doc "Defines a group spec that can be passed to converge or lift."}
  backend
  (group-spec
   "backend"
   :extends [backend-server]
   :node-spec backend-node))

Using the Leiningen plugin will require you to specify a fully qualified namespace to the group created by group-spec. For instance, to start a single backend running in your AWS cloud, you could use:

lein pallet -P aws converge com.foo.nodes/backend 1

When using a node-list computing service provider, you must still specify the full path to the Clojure object that defines the group you want to affect change on, but the name specified in the node-list must match the name given to the group-spec.

For example, assume I have an image running on my local machine in VirtualBox. I can add the following into ~/.pallet/config.clj

(defpallet
  ;; A list of Virtual Box images
  :services
  {:vbox {:provider "node-list"
         :node-list [["my-vm"  "backend"  "192.168.56.101" :debian]]}}
)

To lift the my-phase on that virtual machine using Leiningen requires the following command:

lein pallet -P vbox  lift  com.foo.nodes/backend  :my-phase

As usual, the -P vbox defines the compute service. In this case, it tells Leiningen to use the existing nodes given in the node-list. Specifying com.foo.nodes/backend tells Leiningen which group you want to lift to. When that is happening, Pallet runs through all of the nodes listed in the provider and matches the second parameter ("backend" in this case) to identify which nodes actually correspond to the target group.

pallet doesn't show up in lein tasks

$ lein plugin install lein-newnew 0.2.6 works fine.

Then

$ lein new pallet quickstart

Gives an error Could not find template pallet on the classpath.

Using lein 1.7.1

How do I contribute documentation?

I don't see the actual documentation text in this repo. I searched this repository for documentation snippets without result when trying to find the relevant files to change. Is this stuff stored on a DB or something?

env-map does not exist

Following the instructions on the First Steps page...

When requiring the namespaces, I get the following error...

(require 'pallet.core)
java.lang.IllegalAccessError: env-map does not exist (core.clj:1)

Link to jclouds providers in "Providers" reference page is broken

The broken link is for the text "jclouds providers" in the following paragraph on the Providers reference page:

Adding the pallet-jclouds jar to your project's dependencies gives access to jclouds providers. Each jclouds provider also has a specific jar that you will need to add (there is an org.jclouds/jclouds-all dependency, if you want to add all the jclouds providers).

The current link:

The link should be updated to the following:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.